Bimba.git

commit 83f926c0305a939500d949e455b4c1e5a1fae99e

Author: Adam <git@apiote.xyz>

reproducible builds

 app/build.gradle | 36 ++++++++++++++++++++++++++++++++-
 metadata/en-US/changelogs/21.txt | 5 ++++


diff --git a/app/build.gradle b/app/build.gradle
index 4a826718a3be350286e3dbe39465842db656594b..ec6159fa7307a50723f1f71c85373d627595572a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,3 +1,8 @@
+// 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'
@@ -11,8 +16,8 @@     defaultConfig {
         applicationId "xyz.apiote.bimba.czwek"
         minSdk 21
         targetSdk 33
-        versionCode 20
-        versionName "3.0"
+        versionCode 21
+        versionName "3.0.1"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
@@ -59,3 +64,30 @@     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, "")
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
\ No newline at end of file




diff --git a/metadata/en-US/changelogs/21.txt b/metadata/en-US/changelogs/21.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8976acc2147fe4e4d026f425de2915c6bed646a7
--- /dev/null
+++ b/metadata/en-US/changelogs/21.txt
@@ -0,0 +1,5 @@
+Version 3.0 is completely rewritten from scratch and features totally new architecture.
+
+* Favorites are removed
+* Stops and vehicles are on map
+* UI is now Material3