ref: v3.1
app/build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
// xxx ignore not resolved classes; gradle can manage. fixes reproducible builds import com.android.tools.profgen.ArtProfileKt import com.android.tools.profgen.ArtProfileSerializer import com.android.tools.profgen.DexFile plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id "org.jetbrains.kotlin.plugin.parcelize" } android { compileSdk 33 defaultConfig { applicationId "xyz.apiote.bimba.czwek" minSdk 21 targetSdk 33 versionCode 22 versionName "3.1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ["en", "pl", "it"] } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = 17 targetCompatibility = 17 coreLibraryDesugaringEnabled true } buildFeatures { viewBinding true } namespace 'xyz.apiote.bimba.czwek' buildToolsVersion '33.0.1' } dependencies { implementation 'androidx.core:core-ktx:1.10.1' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0' implementation 'androidx.navigation:navigation-ui-ktx:2.6.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.core:core-splashscreen:1.0.1' implementation 'com.google.openlocationcode:openlocationcode:1.0.4' implementation 'org.osmdroid:osmdroid-android:6.1.16' implementation 'org.yaml:snakeyaml:2.0' implementation 'androidx.activity:activity:1.7.2' implementation 'com.google.openlocationcode:openlocationcode:1.0.4' implementation 'com.otaliastudios:zoomlayout:1.9.0' implementation 'dev.bandb.graphview:graphview:0.8.1' implementation project(path: ':fruchtfleisch') coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' } // note fixes reproducible builds project.afterEvaluate { tasks.each { task -> if (task.name.startsWith("compile") && task.name.endsWith("ReleaseArtProfile")) { task.doLast { outputs.files.each { file -> if (file.name.endsWith(".profm")) { println("Sorting ${file} ...") def version = ArtProfileSerializer.valueOf("METADATA_0_0_2") def profile = ArtProfileKt.ArtProfile(file) def keys = new ArrayList(profile.profileData.keySet()) def sortedData = new LinkedHashMap() // xxx ignore not resolved classes; gradle can manage Collections.sort keys, new DexFile.Companion() keys.each { key -> sortedData[key] = profile.profileData[key] } new FileOutputStream(file).with { write(version.magicBytes$profgen) write(version.versionBytes$profgen) version.write$profgen(it, sortedData, "") } } } } } } } |