2011-08-18 126 views
144

我該如何檢查Android apk是否使用發行版簽署而不是調試證書?如何驗證Android apk是否與發行證書籤署?

+5

我寫[腳本](https://raw.githubusercontent.com/johnnylambada/robospanner/master/apk/apk-validate),將驗證的APK針對一個密鑰存儲。 – JohnnyLambada

+0

接受答案,如果你有你的。 –

+0

@JohnnyLambada如何在Mac上運行腳本? –

回答

248

使用此命令,(去到Java在命令提示符< JDK < bin路徑)

$ jarsigner -verify -verbose -certs my_application.apk 

如果你看到 「CN = Android的調試」,這意味着.apk文件與生成的調試密鑰簽名通過Android SDK (意味着它是未簽名的),否則你會找到CN的東西。 有關詳細信息,請參閱:http://developer.android.com/guide/publishing/app-signing.html

+0

我得到了消息作爲jar驗證在命令執行結束爲​​2差異apk files.so弄糊塗了。但是因爲它爲1個apk提供了CN =「android debug」,而另外一個則爲apk提供了不同的版本.got to knw 1是簽名的。謝謝。 – iRunner

+0

@iRunner在使用調試密鑰或真實密鑰安裝到設備上之前,所有應用程序都需要進行簽名。 – Chloe

+2

這是如何驗證簽名的?它會使用系統的可信CA嗎?或者這只是一個檢查jar文件完整性的工具?謝謝 –

52

使用這個命令:(的jarsigner是在Java bin文件夾在命令提示符轉到Java的> jdk-> bin路徑)

$ jarsigner -verify my_signed.apk 

如果.apk文件被正確簽名,版畫的jarsigner 「罐子驗證」

+9

這是不夠好,因爲調試和發佈apks簽署將給予「jar驗證」。檢查@ Anass的答案的細節。 – rpattabi

27

使用控制檯命令:

apksigner verify --print-certs application-development-release.apk

呦你可以在../sdk/build-tools/24.0.3/apksigner.bat找到apksigner。僅適用於構建工具v。24.0.3及更高版本。

而且讀谷歌文檔:https://developer.android.com/studio/command-line/apksigner.html

+0

我在'%LOCALAPPDATA%\ Android \ sdk \ build-tools \ 25.0.3 \'中發現了'apksigner'(以及我安裝的其他每個構建工具版本) – Jon

+0

info如何找到它:http://stackoverflow.com/q/40004884/1747983 – Tilo

+2

請注意,構建工具的版本'26.0.0'中缺少'apksigner'。它在https://issuetracker.google.com/issues/62696222中進行了跟蹤,並且應該在下一個版本中進行修復。到那時爲止的解決方法是使用'25.0.3'中的'apksigner'。 – friederbluemle