Release APK not fully reproducible: license metadata line endings + aboutlibraries index differ (v1.2.0 github flavor)
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 56
- Forks
- 11
- Avg merge
- 4h 37m
- Merged PRs (30d)
- 19
Description
Summary: Third-party unsigned rebuild of the v1.2.0 GitHub-flavor release APK (KeyGo-v1.2.0-github_with_exclusive_updater.apk, sha256 0f3b07953021a5966688d6b4d77a530f872ec4b6e69bce1e625b66fb735bb767) from the v1.2.0 tag produces a near-identical APK: classes.dex and all code resources are byte-identical.
Remaining diffs (3 files of 1204 common ZIP entries):
assets/30k.txtandres/7Y(Apache license text): CRLF vs LF line endings — official build has CRLF, ours LF (or vice versa); line sets identical after normalizationres/7Y/res/Hz(aboutlibraries artifacts): size:offset columns differ; official also includes akeemobile/kotpasslicense entry absent in our build
Environment: OpenJDK 21.0.2, Android SDK, ./gradlew assembleGithubRelease, Linux. Repo CI builds with JDK 22 per .github/workflows/android-release.yml.
Hypotheses: line-ending normalization differs by OS/git config (maintainer macOS vs our Linux), and aboutlibraries index generation ordering/environment.
Suggestion: pin license generation (e.g. commit generated files, or normalize line endings + sort deterministically) to make the release APK fully third-party reproducible. Happy to provide full diff details.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with .github/workflows/android-release.yml and reproduce the GitHub flavor using ./gradlew assembleGithubRelease under the stated JDK and Linux environment. Compare the generated APK with the v1.2.0 artifact, focusing on assets/30k.txt, res/7Y, and res/Hz and their line endings, ordering, offsets, and license entries. Done means the rebuilt APK has no remaining ZIP-entry differences.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- build-system, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100