You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Make Android APK signing reproducible and preserve pairing across certificate migration #23
The Android APKs currently published from GitHub Actions are debug-signed with a runner-local key, not a persistent per-app signing identity. APK Signing Block v2 certificate SHA-256 extracted from released APKs:
These differ. Android rejects in-place updates when the new APK's signing certificate does not match the installed package identity. Do not recommend uninstalling Conduit just to update: that erases app-private Noise identity, pairing state and history.
Required solution
Configure a durable, private Android signing keystore in GitHub Actions encrypted secrets, never in the repository. Upload a signed optimized release APK, and verify the expected public certificate fingerprint before publishing a tag.
Ensure every future release uses the same certificate; add CI check comparing signer identity and reproducible release artifact naming.
Develop and test a one-time, verified, data-preserving migration from currently installed debug certificates. Do not attempt migration without an authenticated device and a verified backup/restore plan (the current test phone is not attached via ADB).
Confirm upgrades, pairing identity and transfer history survive on real Android 16.
Independent from the v0.1.12 LAN/Relay reconnection logic in PR #22. Code-level network fixes do not make a differently signed Android APK safely upgradeable.
Implemented on PR #27; not yet merged to the default branch.
Persistent private release signer is held only in encrypted CI secrets. Public certificate SHA-256: 41407a095b8f8dbe0cbf63084d1f7ca9ff1f35efad07d716fd95d64c8791d2ae. Tagged builds verify the certificate and publish the optimized signed APK, not a runner-local debug build.
Trusted workflow 41857249743 passed 22 Android UI/motion tests and a disposable certificate-change plus same-signer-upgrade preservation rehearsal.
The existing rooted OnePlus was safely migrated to optimized code17 / 0.1.15 after validating independent private phone/local backups and retaining the exact original APK. Every restored state file matched before restarting background services, and the immutable Noise identity was verified again after restoring permissions. Private backups are not uploaded.
The migrated phone re-established its existing authenticated Relay pairing. A real 8192-byte PC-to-phone-to-PC file round-trip matched SHA-256 at both destinations. Future updates use the same certificate in place.
This verifies this controlled rooted-device migration, not a universal non-root migration path. Keep the issue linked to PR #27 until the stable signing changes are integrated; never recommend uninstalling without a verified backup and restore route.
Activity
nonlog commentedon Nov 4, 2026
Verified code17 stable-signer migration
Implemented on PR #27; not yet merged to the default branch.
This verifies this controlled rooted-device migration, not a universal non-root migration path. Keep the issue linked to PR #27 until the stable signing changes are integrated; never recommend uninstalling without a verified backup and restore route.