Android 安卓-我怎么知道apk已经用我的密钥签名了

Android 安卓-我怎么知道apk已经用我的密钥签名了,android,key,apk,android-keystore,Android,Key,Apk,Android Keystore,我们有一个为我们创建的第三方应用程序,但我们将继续保持 他们已经建立了apk并用自己的密钥签名,但是为了让我们上传它并使用我们的密钥,我不得不放弃它 为此我用了 现在我试着将他们的apk与我辞职的apk进行比较,但我不确定该怎么办 我试过了 jarsigner -verify -keystore my_keystore_location -verbose -certs my.apk 我收到了很多带有smk的文件。这将有意义的关键以下 s = signature was verified m

我们有一个为我们创建的第三方应用程序,但我们将继续保持

他们已经建立了apk并用自己的密钥签名,但是为了让我们上传它并使用我们的密钥,我不得不放弃它

为此我用了

现在我试着将他们的apk与我辞职的apk进行比较,但我不确定该怎么办

我试过了

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,这不应该发生,因为这意味着它已经用密钥库中的密钥签名了

有什么想法吗


谢谢

我不确定这是否有效,但我在package manager中发现了它:

它应该能够获取您的第一个软件包(您自己的)签名,并将其与您的第三方应用程序的签名进行比较。这是在android应用程序上运行的,而不是在您的开发平台(Windows、Mac、Linux等)上运行的

查看文档,如果返回0,则签名匹配。如果返回1,则两者都不签名-3分不相配-2表示未签署第二个包,1表示未签署第一个包-4如果其中一个包无效

此代码适用于我:

final PackageManager pm = getPackageManager();
System.out.println(pm.checkSignatures("com.testing1", "com.testing2"));

所以,你认为可以创建一个小的测试应用程序,它只需要将两个PackageName作为输入,然后输出结果。我认为,你也可以在自己的apk中进行测试。但使用另一个测试apk也应该可以。我继续创建了自己的应用程序,但它实际上与您编写的相同。谢谢你给我这个主意