2011-08-18 130 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