You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Codemagic部署Firebase App Distribution时SHA1密钥变更问题

解决Codemagic构建Flutter安卓应用到Firebase App Distribution时SHA1频繁变更导致Google Auth失效的问题

方案1:用固定自定义签名密钥(最稳定,推荐)

这是根治问题的办法,让每次构建都用同一个签名密钥,SHA1自然固定:

  • 先生成自己的安卓签名keystore,执行命令:
    keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
  • 打开Codemagic项目的Environment variables,添加这几个变量:
    • KEYSTORE_CONTENT:把你的keystore文件转成base64(命令:base64 my-release-key.jks | tr -d '\n'),复制结果填进去
    • KEYSTORE_PASSWORD:你创建keystore时设的密码
    • KEY_ALIAS:密钥别名(就是上面命令里的my-alias)
    • KEY_PASSWORD:密钥的密码
  • 在Codemagic的构建脚本里配置签名,或者直接修改android/app/build.gradle的签名部分:
    android {
        signingConfigs {
            release {
                storeFile file(System.getenv("KEYSTORE_PATH"))
                storePassword System.getenv("KEYSTORE_PASSWORD")
                keyAlias System.getenv("KEY_ALIAS")
                keyPassword System.getenv("KEY_PASSWORD")
            }
        }
        buildTypes {
            release {
                signingConfig signingConfigs.release
            }
        }
    }
    
  • 最后把这个固定密钥的SHA1(用keytool -list -v -keystore my-release-key.jks获取)添加到Firebase项目一次,之后所有构建的SHA1都不会变,Google Auth就能正常工作了。

方案2:构建时自动同步SHA1到Firebase

如果暂时不想换自定义密钥,可以让Codemagic在构建过程中自动把当前的SHA1加到Firebase:

  • 先把Firebase的服务账号JSON文件转成base64,添加到Codemagic的环境变量FIREBASE_SERVICE_ACCOUNT
  • 在构建脚本里加这几步:
    1. 装Firebase CLI:npm install -g firebase-tools
    2. 解码服务账号并登录:
      echo $FIREBASE_SERVICE_ACCOUNT | base64 --decode > service-account.json
      firebase login:ci --token $(cat service-account.json)
      
    3. 获取当前构建的SHA1:
      SHA1=$(keytool -list -v -keystore $CM_KEYSTORE_PATH -alias $CM_KEY_ALIAS -storepass $CM_KEYSTORE_PASSWORD -keypass $CM_KEY_PASSWORD | grep SHA1 | awk '{print $2}')
      
    4. 把SHA1添加到Firebase项目:
      firebase projects:add-android-app <你的Firebase项目ID> --package-name <你的应用包名> --sha1 $SHA1
      
    注意:这个方案每次构建都会新增一个SHA1到Firebase,时间长了会积累一堆密钥,适合临时用。

方案3:禁用Codemagic临时签名(仅调试用)

如果是调试构建,可以关掉Codemagic的临时签名,用本地调试密钥的SHA1:

  • 在Codemagic的Android build settings里,把Sign build选项关掉
  • 把本地调试密钥的SHA1(一般在~/.android/debug.keystore,密码是android)添加到Firebase项目就行,不过这个只适合调试,别用在正式发布上。

内容的提问来源于stack exchange,提问作者Ivan Rene Ramirez Castro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:33:32