正如标题所解释的,我想知道是否有方法(代码)知道生成的应用程序(.apk)是使用 Debug 证书或 Export 证书?我想在我的应用程序中检查这个,以便我可以启用/禁用某些功能,具体取决于证书的类型。
我想知道Google是否会在我们通过开发者控制台在Market上传应用时验证此信息?
任何建议/代码将不胜感激。
答案 0 :(得分:2)
我用
final PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
ApplicationUtils.DEBUG_ENABLED = (info.applicationInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
启用/禁用调试日志记录。
答案 1 :(得分:1)
我找到了这个资源,它描述了你想要解决的问题。本页介绍如何在代码中获取有关密钥库的信息。
http://daniel-codes.blogspot.com/2011/04/detecting-keystore-signature-in-code.html
答案 2 :(得分:0)
您只能使用导出证书将应用部署到Android电子市场。
如果您的APK未使用您上传第一张APK时使用的相同证书进行签名,则会拒绝您的APK。
看起来您可以从以下命令获取有关公钥的信息:javax.security.auth.Subject包(尝试使用getPublicCredentials()方法)。我自己没有用过。
答案 3 :(得分:0)
公司名称称为调试密钥的Android Debug。
对调试和签名的apks运行jarsigner -verbose -certs -verify。您将看到调试apk,CN字段称为Android调试。对于您签名的apk,它是密钥签名者的名称。
这可能是谷歌和其他市场在上传到市场时检查密钥的方式。像其他人说的那样,你将无法将使用调试密钥签名的应用程序上传到市场,所以我不知道为什么你需要检查这个。