我可以将 android 的 release.keystore 文件存储在资产文件夹中吗?
Can I store the android's release.keystore file inside assets folder?
在 android 开发者页面 (http://developer.android.com/tools/publishing/app-signing.html#secure-key) 中,它指出:
Keep the keystore file containing your private key in a safe, secure
place.
这是否意味着我们应该将 release.keystore 文件保存在本地计算机的某个位置(而不是在应用程序中)?
或者我能否将它保存在 src/main/assets
文件夹中,因为密钥库受密码保护?但另一方面,keyPassword
和 storePassword
存储在 build.gradle 文件中,因此将 release.keystore 文件存储在 src/main/assets
中不是一个好主意吗?什么方法最安全?
您应该 release.keystore
在应用程序之外的某个地方保持安全,例如您的本地计算机。
如果您以后想要更新您的应用程序,您将只有在使用相同的密钥签名时才能更新您的应用程序。
例如,如果您将它放入您的应用程序中,然后有人接管了它,那么他们将能够通过使用密钥签名来发布您的应用程序。
编辑:关于保护密钥的官方Android建议
Your reputation as a developer entity depends on your securing your
private key properly, at all times, until the key is expired. Here are
some tips for keeping your key secure:
- Select strong passwords for the keystore and key.
- Do not give or lend anyone your private key, and do not let unauthorized persons know your keystore and key passwords.
- Keep the keystore file containing your private key in a safe, secure place.
最好制作副本并将其存储在本地 computer/your 在线 repository/google 驱动器上。如果丢失它,您将无法发布对同一应用程序的更新。
不,切勿以任何方式或形式共享您的密钥库。
您的密钥库不需要,也不应该在您的应用程序资产中。
它仅供您签署您的发布版本。没有其他人应该拥有它或知道它的密码。
您需要您的密钥库来证明该应用程序确实是您制作的。这也是为什么您必须使用相同的密钥库签署您的应用程序才能发布更新的原因。只有您应该能够发布更新并通过使用您的密钥库对应用程序签名来证明这一点。
如果您分发您的密钥库,您只是让别人猜测或暴力破解您的密钥库密码,然后使用它签署应用程序。换句话说,他可以假装他是你。
您不会找到任何关于此的详尽文档,因为这应该只是常识。它与使您能够安全地在 Internet 上支付某物或发送签名电子邮件的技术相同:public 密钥加密。
事实上,我只是对您想共享您的密钥库感到困惑,我可以假设您不知道它是什么或它的作用。这就是为什么我试图至少解释上面的基本知识。
附带说明一下,因为我不得不提到任何人都可以从应用商店下载您的应用并查看您的源代码、资源或资产——基本上不需要任何技术知识。
如果你将你的密钥库放入你的资产中,并因此将它与你的 apk 一起发送,那么对于任何有恶意的人来说,这只是一个早期的圣诞节。这几乎就像把你家的钥匙交给想要抢劫你的窃贼。
在 android 开发者页面 (http://developer.android.com/tools/publishing/app-signing.html#secure-key) 中,它指出:
Keep the keystore file containing your private key in a safe, secure place.
这是否意味着我们应该将 release.keystore 文件保存在本地计算机的某个位置(而不是在应用程序中)?
或者我能否将它保存在 src/main/assets
文件夹中,因为密钥库受密码保护?但另一方面,keyPassword
和 storePassword
存储在 build.gradle 文件中,因此将 release.keystore 文件存储在 src/main/assets
中不是一个好主意吗?什么方法最安全?
您应该 release.keystore
在应用程序之外的某个地方保持安全,例如您的本地计算机。
如果您以后想要更新您的应用程序,您将只有在使用相同的密钥签名时才能更新您的应用程序。
例如,如果您将它放入您的应用程序中,然后有人接管了它,那么他们将能够通过使用密钥签名来发布您的应用程序。
编辑:关于保护密钥的官方Android建议
Your reputation as a developer entity depends on your securing your private key properly, at all times, until the key is expired. Here are some tips for keeping your key secure:
- Select strong passwords for the keystore and key.
- Do not give or lend anyone your private key, and do not let unauthorized persons know your keystore and key passwords.
- Keep the keystore file containing your private key in a safe, secure place.
最好制作副本并将其存储在本地 computer/your 在线 repository/google 驱动器上。如果丢失它,您将无法发布对同一应用程序的更新。
不,切勿以任何方式或形式共享您的密钥库。
您的密钥库不需要,也不应该在您的应用程序资产中。
它仅供您签署您的发布版本。没有其他人应该拥有它或知道它的密码。
您需要您的密钥库来证明该应用程序确实是您制作的。这也是为什么您必须使用相同的密钥库签署您的应用程序才能发布更新的原因。只有您应该能够发布更新并通过使用您的密钥库对应用程序签名来证明这一点。
如果您分发您的密钥库,您只是让别人猜测或暴力破解您的密钥库密码,然后使用它签署应用程序。换句话说,他可以假装他是你。
您不会找到任何关于此的详尽文档,因为这应该只是常识。它与使您能够安全地在 Internet 上支付某物或发送签名电子邮件的技术相同:public 密钥加密。
事实上,我只是对您想共享您的密钥库感到困惑,我可以假设您不知道它是什么或它的作用。这就是为什么我试图至少解释上面的基本知识。
附带说明一下,因为我不得不提到任何人都可以从应用商店下载您的应用并查看您的源代码、资源或资产——基本上不需要任何技术知识。
如果你将你的密钥库放入你的资产中,并因此将它与你的 apk 一起发送,那么对于任何有恶意的人来说,这只是一个早期的圣诞节。这几乎就像把你家的钥匙交给想要抢劫你的窃贼。