如何验证Android apk是否已使用发布证书签名?

Vad*_*lan 199 android apk android-keystore

如何检查Android apk是否已使用发布而不是调试证书进行签名?

Ana*_*ass 340

使用此命令,(转到cmd提示符中的java <jdk <bin路径)

$ jarsigner -verify -verbose -certs my_application.apk
Run Code Online (Sandbox Code Playgroud)

如果您看到"CN = Android Debug",这意味着.apk已使用Android SDK生成的调试密钥进行签名(意味着它是未签名的),否则您将找到CN的内容.有关详细信息,请参阅:http://developer.android.com/guide/publishing/app-signing.html

  • 我们如何检查它是否使用相同的证书文件进行签名,而不仅仅是一个恰好具有组织,位置等相同值的文件.? (3认同)
  • 这如何验证签名?它会使用系统的可信CA吗?或者这只是检查jar文件完整性的工具?谢谢 (2认同)
  • `这意味着.apk是使用Android SDK生成的调试密钥签名的(意味着它是无符号的)` - 这并不意味着它是无符号的.它意味着你刚才写的 - 用调试密钥签名. (2认同)

Uda*_*ran 58

使用此命令:( Jarsigner在您的Java bin文件夹中,在cmd提示符下转到java-> jdk-> bin路径)

$ jarsigner -verify my_signed.apk
Run Code Online (Sandbox Code Playgroud)

如果.apk签名正确,Jarsigner打印"jar verified"

  • 这不够好,因为调试和发布apks都签名将给出"jar验证".查看@Anass答案的详细信息. (13认同)

小智 54

使用console命令:

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

您可以在../sdk/build-tools/24.0.3/apksigner.bat中找到apksigner.仅适用于构建工具v.24.0.3及更高版本.

另请阅读google文档:https://developer.android.com/studio/command-line/apksigner.html

  • 这是 apk 的最佳选择,因为有时“jarsigner”和“keytool”都会错误地报告该 apk 是“不是签名的 jar 文件”,但“apksigner”每次都会正确报告。 (3认同)
  • 请注意,构建工具的版本"26.0.0"中缺少"apksigner".它在https://issuetracker.google.com/issues/62696222中进行跟踪,并且应该在下一个版本中修复.直到那时的解决方法是使用来自`25.0.3`的`apksigner`. (2认同)
  • 更新:`apksigner`包含在版本`26.0.1`中 (2认同)
  • 对于详细输出使用 -v : `./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk` (2认同)

Ran*_*ku' 23

最简单的:

keytool -list -printcert -jarfile file.apk
Run Code Online (Sandbox Code Playgroud)

这使用Java内置的keytool应用程序,不需要解压缩或安装任何构建工具。

  • 您一次只能使用一个命令,“list”或“printcert”。 (13认同)