2014-02-18 125 views
1

我们有一个为我们创建的第三方应用,但我们会继续前进。Android - 我如何知道apk已经用我的密钥签名

他们已经构建了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的文件,这是不应该的,因为这将说它已签署在我的密钥库中有一个密钥!?

任何想法的人?

感谢

回答

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")); 
+0

那么你认为可能创建一个小的测试应用程序,也只需要两个packagenames作为输入,然后输出结果 –

+0

您可以将自己的APK中做到这一点我认为。但使用另一个测试apk也可以。 – Orphamiel

+0

用有效的代码编辑。 – Orphamiel

相关问题