-
-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reproducible Builds #206
Comments
I can change the build-time being included, but I have no idea where the other differences come from. Don't have time to look into that either, sorry. |
Fair enough Matthias – thanks! So maybe fix that build-time thingy, and confirm which SDK you build with and on what OS (so we can rule out anything coming from that end)? Mine is stated above – but I can switch to e.g. |
Oops, JDK I meant of course… But OpenJDK-21 on |
permission-pilot/.github/workflows/release-tag.yml Lines 38 to 41 in c66a1cf
JDK17 on |
Thanks! So… wait: "adopt"? I must have missed that. Is there any reason not to use OpenJDK? Could be that Adopt deals a little different with annotations, so this could be the cause of the differences. |
Hm not that I remember, I think I took it from a blog post about setting up runners for Android 🤔 |
Ah. Mind to make a build with OpenJDK, attach the APK here (just rename it to |
At IzzyOnDroid we support Reproducible Builds (see: Reproducible Builds, special client support and more at IzzyOnDroid). Trying for yours, I was able to successfully generate the APK using
./gradlew assembleFossRelease
, but the resulting APKs were not identical. One culprit is an embedded build timestamp – but even if I "override" that (usingsed
to replace${buildtime()}
with the timestamp from your APK), there are differences inclasses.dex
remaining, see contents ofdiff.zip. The essential parts are:
(
-
is your APK,+
is the one I built). In case it's relevant: the build here happened on Debian bookworm with OpenJDK 17.I hope you have an idea where that difference comes from, and how it can be avoided? Also, could the
buildtime()
be replaced by something reproducible (e.g. commit count, commit hash, time of the last commit) or skipped altogether?We'd appreciate if you could help making your build reproducible. We've prepared some hints on reproducible builds for that.
Thanks in advance – and looking forward to your reply!
The text was updated successfully, but these errors were encountered: