我想在运行时以编程方式检查APK的签名。我在我的开发工作站上拥有一个密钥库,所以我可以知道(不知道如何)我正在用APK签署公钥。
一旦我知道标牌后的公钥是什么,我想输入源代码并检查当前运行的应用程序是否与密钥匹配。
有可能吗?如果是这样,我如何从Eclipse生成的密钥库中获取公钥?
感谢。
答案 0 :(得分:4)
你可以试试这个,它应该可行
Signature[] sigs = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs)
{
// log the sig here
}
答案 1 :(得分:0)
我想我和你有同样的情况。 这是我的original solution。
您可以尝试一下。
Signature sig = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];
Signature releaseSig = context.getPackageManager().getPackageAchiveInfo("/mnt/sdcard/myReleaseApk.apk", PackageManager.GET_SIGNATURES).signatures[0];
return sig.hashCode() == releaseSig.hashCode;