将生成的密钥库文件保存在 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) 的用途。因为它实际上并没有说太多,它只是符号。所以对此的任何解释都会很棒。

这里有几点需要注意。

  1. 您问的是 KeyStore 的用途。每个应用程序都有一个唯一的签名来标识它是真实的。当用户更新您的应用程序时,他们只能安装使用相同密钥签名的新版本。这可以防止恶意方通过分发修改后的版本来破坏应用程序更新。在这里阅读更多相关信息:https://developer.android.com/studio/publish/app-signing

  2. 回答你的标题问题:只要Git仓库是私有的,只有你(和你的开发团队的其他成员)可以访问它,就可以离开存储库中的 KeyStore,尤其是当它使用安全密码加密时。不过,为了额外的安全性,它应该单独保存,并且永远不要上传到 public Git 存储库。但是请做好备份,因为没有它,您将无法再发布此应用的应用更新。

  3. 关于您同事遇到的错误,那是因为您将 KeyStore 输入为 debug 密钥。这不是必需的,您通常可以使用默认调试密钥调试您的应用程序。你绝对不应该发布调试版本,你应该发布一个在 release 模式下构建的应用程序,或者使用 Gradle 脚本,或者通过选择“Build”→“Generate signed Bundle / APK”,这将要求您提供 KeyStore,而无需修改 Gradle 个文件。 另见:https://developer.android.com/studio/publish/preparing#publishing-build