我们已经为我们创建了第三方应用,但我们将继续推进。
他们已经构建了apk并使用自己的密钥对其进行了签名,但为了让我们上传并使用我们的密钥,我不得不重新签名。
为此,我使用了https://code.google.com/p/apk-resigner/
现在我正在尝试将他们的apk与我已辞职的人进行比较,但我并不是100%确定要做什么。
我已经尝试过了
jarsigner -verify -keystore my_keystore_location -verbose -certs my.apk
我收到了很多带有smk的文件。这在键
之后是有意义的s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
但是当我运行仍然有他们的密钥的第三方apk时,我也得到了文件的smk,这不应该发生,因为它会说它已经用我的密钥库中的密钥签名了!?
任何想法?
由于
答案 0 :(得分:1)
我不确定这是否有效,但我在包管理器中发现它: http://developer.android.com/reference/android/content/pm/PackageManager.html#checkSignatures(java.lang.String, java.lang.String)
它应该能够获取您的第一个包(您自己)的签名,并将其与您的第三方应用程序的签名进行比较。这是在Android应用程序上运行而不是在您的开发平台(Windows,Mac,Linux等)上运行。
查看文档,如果返回0,则签名匹配。如果返回1,则不签名。 -3不匹配。 -2表示没有第二个包未签名,-1表示第一个包未签名。 -4如果任何一个包都无效。
此代码对我有用:
final PackageManager pm = getPackageManager();
System.out.println(pm.checkSignatures("com.testing1", "com.testing2"));