2014-02-18 121 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

相關問題