ADB Shell命令如何检查APK是调试版还是发布版签名?

10

如何检查apk是调试版还是发布版签名?
是否有直接的adb命令来验证apk签名?

尝试了以下的dumpsysaapt命令,但未能找到确切的标志。

adb shell dumpsys package <package name>
aapt dump badging <apk file>

如何判断给定的apk是调试版本还是发布版本?如何确定我们可以安装此apk的哪些版本(用户版、用户调试版还是工程师版)?


要检查已安装应用程序是否可调试,请参见https://dev59.com/44jca4cB1Zd3GeqP1L5H#29054837。 - Alex P.
4个回答

19

如果你想检查apk文件是否可以进行调试,请使用下面的aapt命令。

aapt dump badging /path/to/apk | grep -c application-debuggable

输出 1:可调试的 输出 0:不可调试的。


请纠正我,但我认为Google Play安装的应用程序是不允许进行调试的。 - not2qubit
3
在Windows系统中,此工具位于%ANDROID_SDK%\build-tools<version>\aapt.exe。 - youen
不确定自此回答发布以来是否有所更改,但是尝试使用来自SKD 30的aapt命令,如果在输出中看到“application-debuggable”,则是调试应用程序,否则是发布应用程序。 - MemoryLeak

9
我尝试了很多方法,最终找到了以下解决方案:
adb shell dumpsys package <package name> | findstr flags

如果构建是可调试的,"flags"行将有"DEBUGGABLE"参数。如果没有该参数,则构建不可调试。

这应该是被接受的答案,因为它适用于旧设备,特别是那些没有aapt安装的设备,就像我的Android 4.3自定义设备一样。 - Farrukh Najmi
1
谢谢!请注意,这仅适用于Windows。对于Linux,您必须使用grep命令找到那行特定的内容。 - Claudiu Balta

4
你似乎感到困惑。Apks通常有“debug”和“release”版本,而“eng”,“userdebug”和“user”构建类型用于整个固件映像。
如果生成者正确填写,则可以使用以下方法查找构建信息:
adb shell getprop ro.build.fingerprint

这个命令如何链接到我想要检查的apk/已安装的应用程序?无论我安装了什么,它总是返回相同的结果。 - Cliff Burton

1

run-as 可能提供一个提示:

$ adb shell run-as com.example.foo.bar
run-as: package not debuggable: com.example.foo.bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接