解决 Android App 签名不一致问题的核心在于:每次构建必须使用同一个签名文件(Keystore)。GitHub Actions 每次运行都是全新的环境,如果依赖默认的 debug 签名,每次构建(或环境更新时)签名都可能不同,导致无法覆盖安装。
我已经为您修改了项目配置,现在完成整个修复还需要您执行以下步骤:
- 修改了什么? 我执行了以下两项修改:
build.gradle: 修改为尝试读取 key.properties 文件中的签名配置。 release.yml: 增加了在 CI 构建前,从 GitHub Secrets 读取并在运行环境中生成 Keystore 和 key.properties 的步骤。 接下来您需要做的(一次性设置): 请在您本地终端(PowerShell)中执行以下步骤来生成签名文件并配置 GitHub。
第一步:生成上传密钥(Keystore) 如果您的项目根目录下还没有 .jks 文件,请运行以下命令生成一个新的。记住您设置的密码!
第二步:将 Keystore 转换为 Base64 字符串 为了把这个文件存到 GitHub Secrets,我们需要把它变成一串文本。
第三步:配置 GitHub Secrets 打开您的 GitHub 仓库页面。 进入 Settings -> Secrets and variables -> Actions。 点击 New repository secret,添加以下 4 个变量: Name Value 说明 KEYSTORE_BASE64 (粘贴刚才复制的那一长串 Base64 字符串) 密钥文件本身 KEY_ALIAS upload 第1步中 -alias 后的参数 STORE_PASSWORD (您第一步设置的密码) 库密码 KEY_PASSWORD (您第一步设置的密码) 密钥密码(通常和库密码一样) 2. 本地开发如何通过? 为了让您本地打 Release 包也能用这个签名(可选,本地主要用 debug),您可以在 android 目录下创建一个 key.properties 文件(注意:不要提交这个文件到 Git,在 .gitignore 中忽略它):
文件路径: android/key.properties 内容:
完成以上步骤后,下次发布的 Release 包就会使用固定的签名,彻底解决“签名不一致”导致无法更新的问题。