如何为新项目创建唯一SHA-1密钥?Firebase密钥冲突问题
为每个Android项目生成唯一SHA-1密钥的方法
你执行cd android && ./gradlew signingReport生成的SHA-1始终相同,是因为所有项目默认共用Android Studio自带的debug keystore(默认路径为~/.android/debug.keystore)。要给每个项目创建独立的SHA-1,有两种实用方案:
方案1:为单个项目创建专属debug keystore
- 打开终端,进入项目的
android/app目录 - 用
keytool生成新的密钥库(替换括号内内容为你的自定义信息):keytool -genkey -v -keystore ./debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug, OU=Android, O=你的公司名, L=你的城市, S=你的省份, C=国家代码" - 打开项目的
android/app/build.gradle文件,在android代码块下添加自定义debug签名配置:signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { debug { signingConfig signingConfigs.debug } // 保留原有的release配置不变 } - 重新执行
./gradlew signingReport,即可获取该项目独有的SHA-1
方案2:在默认keystore中为每个项目创建独立密钥别名
如果不想生成多个keystore,也可以在默认密钥库中为每个项目创建不同的密钥别名:
- 用
keytool在默认keystore里生成新别名(替换your-project-alias为项目专属别名):keytool -genkey -v -keystore ~/.android/debug.keystore -alias your-project-alias -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=项目Debug标识, OU=Android, O=你的公司名, L=你的城市, S=你的省份, C=国家代码" - 修改项目的
android/app/build.gradle配置:signingConfigs { debug { storeFile file(System.getenv("HOME") + "/.android/debug.keystore") storePassword 'android' keyAlias 'your-project-alias' keyPassword 'android' } } buildTypes { debug { signingConfig signingConfigs.debug } } - 执行
./gradlew signingReport获取该项目的唯一SHA-1
验证方式
修改配置后,再次运行./gradlew signingReport,查看debug变体对应的SHA-1值,确认每个项目的SHA-1不同即可。将这个唯一的SHA-1与项目包名绑定到Firebase,就不会再出现“已被占用”的报错。
内容的提问来源于stack exchange,提问作者Junaid Anwar
相关产品推荐
相关产品推荐

