Repository navigation
build: add F-Droid metadata and reproducibility checks - #32
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
F-Droid-style reproducibility
The new check is available through:
It performs the following process:
A mismatch causes the check to fail.
Reproducibility validation
The implementation was validated locally against commit:
The upstream signed APK and reconstructed APK both produced:
Result:
This demonstrates that a clean clone can independently rebuild the unsigned
APK and reconstruct the exact signed upstream APK using its copied signature.
Android VCS metadata
During validation, the release APK was found to contain:
A normal Git repository embedded the source revision, while a detached Git
worktree generated:
That caused otherwise identical release APKs to differ.
Release builds now use:
The VCS metadata is not required at runtime and its removal makes the APK
independent of the physical Git checkout representation.
Signing compatibility
Release signing now deliberately uses:
instead of dynamically selecting the newest installed apksigner.
The signing certificate remains verified against:
Current certificate SHA-256:
The GitHub signed-release workflow installs the same Build Tools version.
CI / release workflow
The signed-release workflow now:
F-Droid metadata
Fastlane-compatible upstream metadata is now stored under:
Each locale currently contains:
The metadata is validated by:
and is included in:
Documentation
Added:
It documents:
Package namespace
The final F-Droid build recipe is intentionally not added in this change.
The current development application ID is:
The next Phase 5 task is to review and finalize the Android package namespace
before a stable public release.
Creating the final F-Droid recipe before that decision would encode an
application ID that may still change.
Validation performed
Roadmap
The Phase 5 item:
remains intentionally unchecked until this change is merged to main and the
real signed-release workflow successfully performs the reproducibility check
in GitHub Actions.