将生成的密钥库文件保存在 android studio 项目中是否安全?
Is it safe to keep generated keystore file in android studio project?
几个月前,我决定将我的应用程序放到 Play 商店中。这意味着我需要制作一个生成的密钥库文件(文件扩展名为 .jks)。我将该文件保存在某个不同的目录中。我在这里引用它:
android {
signingConfigs {
debug {
storePassword 'Store password'
keyAlias 'The key alias'
storeFile file('TheDirectoryPathItIsIn/MyKeyStore.jks')
keyPassword 'The password'
}
}
....
}
我成功地把它放到了 Google Play 商店。所以一切都很好。几个月后,我让其他人将我的存储库拉入 git(这意味着他们只是获得代码)和 运行 我的应用程序在另一台设备上也使用 android studio。但是在运行ning的时候报错,说找不到'TheDirectoryPathItIsIn/MyKeyStore.jks'。所以我将密钥库文件移动到我的 Android Studio 项目 (MyAndroidStudioProject/MyKeyStore.jks
) 中并将其引用为 storeFile file('./MyKeyStore.jks')
。然后没有显示任何错误,但从那以后,我想知道,出于安全原因,将生成的密钥库文件存储在您的 android 工作室项目中是否不好。如果是这样,在哪里存储它?
我真的不知道密钥库文件 (.jks) 的用途。因为它实际上并没有说太多,它只是符号。所以对此的任何解释都会很棒。
这里有几点需要注意。
您问的是 KeyStore 的用途。每个应用程序都有一个唯一的签名来标识它是真实的。当用户更新您的应用程序时,他们只能安装使用相同密钥签名的新版本。这可以防止恶意方通过分发修改后的版本来破坏应用程序更新。在这里阅读更多相关信息:https://developer.android.com/studio/publish/app-signing
回答你的标题问题:只要Git仓库是私有的,只有你(和你的开发团队的其他成员)可以访问它,就可以离开存储库中的 KeyStore,尤其是当它使用安全密码加密时。不过,为了额外的安全性,它应该单独保存,并且永远不要上传到 public Git 存储库。但是请做好备份,因为没有它,您将无法再发布此应用的应用更新。
关于您同事遇到的错误,那是因为您将 KeyStore 输入为 debug
密钥。这不是必需的,您通常可以使用默认调试密钥调试您的应用程序。你绝对不应该发布调试版本,你应该发布一个在 release
模式下构建的应用程序,或者使用 Gradle 脚本,或者通过选择“Build”→“Generate signed Bundle / APK”,这将要求您提供 KeyStore,而无需修改 Gradle 个文件。
另见:https://developer.android.com/studio/publish/preparing#publishing-build
几个月前,我决定将我的应用程序放到 Play 商店中。这意味着我需要制作一个生成的密钥库文件(文件扩展名为 .jks)。我将该文件保存在某个不同的目录中。我在这里引用它:
android {
signingConfigs {
debug {
storePassword 'Store password'
keyAlias 'The key alias'
storeFile file('TheDirectoryPathItIsIn/MyKeyStore.jks')
keyPassword 'The password'
}
}
....
}
我成功地把它放到了 Google Play 商店。所以一切都很好。几个月后,我让其他人将我的存储库拉入 git(这意味着他们只是获得代码)和 运行 我的应用程序在另一台设备上也使用 android studio。但是在运行ning的时候报错,说找不到'TheDirectoryPathItIsIn/MyKeyStore.jks'。所以我将密钥库文件移动到我的 Android Studio 项目 (MyAndroidStudioProject/MyKeyStore.jks
) 中并将其引用为 storeFile file('./MyKeyStore.jks')
。然后没有显示任何错误,但从那以后,我想知道,出于安全原因,将生成的密钥库文件存储在您的 android 工作室项目中是否不好。如果是这样,在哪里存储它?
我真的不知道密钥库文件 (.jks) 的用途。因为它实际上并没有说太多,它只是符号。所以对此的任何解释都会很棒。
这里有几点需要注意。
您问的是 KeyStore 的用途。每个应用程序都有一个唯一的签名来标识它是真实的。当用户更新您的应用程序时,他们只能安装使用相同密钥签名的新版本。这可以防止恶意方通过分发修改后的版本来破坏应用程序更新。在这里阅读更多相关信息:https://developer.android.com/studio/publish/app-signing
回答你的标题问题:只要Git仓库是私有的,只有你(和你的开发团队的其他成员)可以访问它,就可以离开存储库中的 KeyStore,尤其是当它使用安全密码加密时。不过,为了额外的安全性,它应该单独保存,并且永远不要上传到 public Git 存储库。但是请做好备份,因为没有它,您将无法再发布此应用的应用更新。
关于您同事遇到的错误,那是因为您将 KeyStore 输入为
debug
密钥。这不是必需的,您通常可以使用默认调试密钥调试您的应用程序。你绝对不应该发布调试版本,你应该发布一个在release
模式下构建的应用程序,或者使用 Gradle 脚本,或者通过选择“Build”→“Generate signed Bundle / APK”,这将要求您提供 KeyStore,而无需修改 Gradle 个文件。 另见:https://developer.android.com/studio/publish/preparing#publishing-build