我有一个 Firebase 项目,使用位于
~/.android/debug.keystore
的 Android 调试 SHA-1 进行身份验证。我删除了该项目,并在尝试在 Google Cloud 中创建 OAuth 2.0 凭据后意识到,我无法使用相同的包名称和 SHA-1 密钥,因为 Firebase 正在使用它,即使它正在等待删除。
我可以生成一个新的吗?如果可以,有什么后果?我的理解是,密钥库文件对于我的应用程序来说是唯一的,因此生成一个新文件将迫使我创建一个全新的应用程序列表。
使用
keytool
为您的应用程序生成的密钥库(您为应用程序设置别名和密钥库密码)与 ~/.android/debug.keystore
中的调试密钥库文件之间有什么区别?
您当然可以使用 keytool 命令为您的应用程序生成新的密钥库文件。当您第一次在调试模式下构建 Android 应用程序时,会自动创建位于 ~/.android/debug.keystore 的调试密钥库文件 (debug.keystore)。它在开发和测试期间使用。
调试密钥库在开发过程中非常方便,因为它不需要额外的配置,并且允许您在多个项目中使用相同的 SHA-1 密钥。但是,不建议在生产版本中使用它,因为密钥库的私钥是公开的(默认密码也是众所周知的)。对于生产版本,您应该使用 keytool 实用程序或其他密钥管理工具创建自己的密钥库。
当您为应用程序生成新的密钥库时,需要注意一些后果: 身份验证:如果您使用依赖 SHA-1 密钥的身份验证服务(例如 Firebase 身份验证),则需要更新身份验证配置中的 SHA-1 密钥。对于 Firebase,您可以向项目添加多个 SHA-1 密钥,因此您不一定需要立即删除旧密钥。
API 密钥和 OAuth:如果您使用与应用程序包名称和 SHA-1 密钥关联的 API 密钥或 OAuth 凭据,则需要使用新值更新它们。
应用程序签名:如果您的应用程序在 Google Play 上发布,则该应用程序是使用签名密钥进行签名的,更改密钥库意味着您将无法使用以前的密钥库更新应用程序。请务必保留旧密钥库的备份,以便发布现有应用程序的更新。
要生成新的密钥库,您可以使用以下 keytool 命令:
keytool -genkey -v -keystore my-release-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
此命令提示您输入密钥库信息,包括密钥库密码和密钥别名。密钥库密码和密钥别名用于识别和管理密钥库中的密钥。
请记住使用新的 SHA-1 密钥和包名称更新任何相关配置,例如 Firebase 或 Supabase。