我在android studio中制作了两个基本(hello world)应用程序,其中包含不同的项目名称,因此不同的包名称。 在 com.example.first.appA 包中说 App A 和 com.example.second.appB
中的 App B我仍然为上述两个应用获得相同的签名密钥,我完全对同一个密钥的原因一无所知。 有人请帮忙!
以下是我用来从我的应用中获取签名的代码段。
PackageInfo packageInfo = this.getPackageManager()
.getPackageInfo(this.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
byte[] signatureBytes = signature.toByteArray();
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
final String currentSignature = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d("Signature", "Here is the value for SIGNATURE:" + currentSignature);
因此,当我在我的应用 A 和 B 中逐一放置此代码段时。 我在我的日志中得到 currentSignature 的相同值 478yYkKAQF + KST8y4ATKvHkYibo =
注意:我没有为我的应用程序明确签署任何发布/调试模式,即。它们应该是默认的东西。 (使用android studio)
编辑在SO和Google搜索的答案之后我得到了答案,你在android studio上的任何项目都有相同的调试密钥(除非明确修改),你可以得到不同的密钥通过签署您的应用程序来完成不同的项目。
答案 0 :(得分:2)
默认情况下,应用的所有debug
变体都具有相同的签名(即,使用相同的默认证书进行签名)。
如果您希望自己的应用具有不同的签名,则需要生成新的调试证书并手动将其添加到其中一个应用中。
相关链接: How to generate a new keystore. How to change debug keystore.
答案 1 :(得分:1)
默认调试密钥由Android Studio自动生成,存储在~/.android/debug.keystore
(适用于Linux / Mac系统),C:\User\YourUser\.android\debug.keystore
适用于Windows系统。
除非您删除密钥,否则将在该计算机上的每个项目上使用相同的密钥,然后Android Studio将在下次运行时重新自动生成新密钥。
这绝对是正常行为,老实说我不明白为什么你会担心它。
如果您需要(无论出于何种原因)在调试版本上使用不同的签名密钥,请参阅:Android Studio 0.4.+ custom debug keystore