ActivityWatch / ActivityWatch/aw-android

Align Android signing hardening with gptme: base64 keystore secret, cert pinning, fail-closed

未关闭
#208 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Kotlin
星标
265
派生
57
平均合并
2 天 21 小时
30 天内合并 PR
19

描述

gptme/gptme#3409 adopted this repo's signing flow (zipalign + apksigner for APKs, jarsigner for AABs, passwords via env) and hardened it. To keep the two projects on one consistent, battle-tested strategy (cross-referenced in #207), migrate this repo to match:

- [ ] Deliver the keystore as a base64-encoded secret (e.g. `KEY_ANDROID_JKS_B64`) instead of the age-encrypted `android.jks.age` committed in-repo; drop the age decryption step and `adnsio/setup-age-action` dependency. Keeps the keystore fully private instead of public-but-encrypted, and removes the extra age identity secret.
- [ ] Pin the expected signer certificate SHA-256 as a non-secret repo/environment variable and verify every APK's signer fingerprint (`apksigner verify --print-certs`) plus `jarsigner -verify -strict` for AABs before upload.
- [ ] Fail closed: release-tag builds should error out when signing secrets are missing, instead of the current Makefile fallback that ships unsigned artifacts ("No key secrets set, not signing"). Non-tag CI builds can keep the unsigned path.
- [ ] Consider moving the signing secrets into a GitHub environment for scoping.

Reference implementation: gptme/gptme `.github/workflows/tauri.yml` (release-android job) and `docs/contributing.rst` "Android release signing".

Note: the store/key passwords stay the same; only the keystore delivery mechanism changes, so this is a workflow-only migration plus one new secret + one variable.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。