为啥我无法将调试器附加到已签名的 apk 进程?
Posted
技术标签:
【中文标题】为啥我无法将调试器附加到已签名的 apk 进程?【英文标题】:Why I cannot attach debugger to signed apk process?为什么我无法将调试器附加到已签名的 apk 进程? 【发布时间】:2014-07-11 12:11:42 【问题描述】:我制作了一个签名的 APK 并将其安装在设备 (Galaxy S5) 上。运行应用程序并尝试从 IntelliJ IDEA 13.1 附加到它。但 IDEA 在我的设备上看不到任何进程
您可以看到属于该设备的部分是空的。
如果我安装了应用程序的调试版本,那么我可以攻击它的调试器。但如果它是作为签名的 APK 创建的,则不会。
我在哪里犯错了?为什么我无法调试已签名的 APK?
【问题讨论】:
How to debug apk signed for release? 的可能重复项 【参考方案1】:您是否在清单文件的应用程序标签中设置了android:debuggable="true"
?另外,看看How to debug apk signed for release?
【讨论】:
不,我没有。完成后,我可以附加到设备上的进程,但我没有从中获取任何数据。我强制崩溃了,它没有被intellij中的logcat捕获。还有什么想法吗? 你说but I don't get any data from it
。你是什么意思?你是如何强制崩溃的?
这意味着我附加到该进程并且没有收到来自应用程序的 Log.d
消息或任何其他消息。故意崩溃 = 使我知道会产生运行时错误的代码,例如发送 int
如果需要 String
。
Log 的 Android 文档说 Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept.
。也许这就是原因。
感谢您的信息。但是,这并没有说明为什么在发生错误(应用程序崩溃)时我没有得到响应。【参考方案2】:
在 Android Studio stable 中,您必须在 AndroidManifest
文件中的 application
中添加以下 2 行:
android:debuggable="true"
tools:ignore="HardcodedDebugMode"
第一个将启用已签名 APK 的调试,第二个将防止编译时错误。
之后,您可以通过“将调试器附加到 Android 进程”按钮附加到该进程。
【讨论】:
【参考方案3】:如果应用是通过 Google Play 商店签名和安装的,则不允许附加到进程。目前,Google Play 商店拒绝上传任何带有以下内容的 apk:
android:debuggable="true"
【讨论】:
以上是关于为啥我无法将调试器附加到已签名的 apk 进程?的主要内容,如果未能解决你的问题,请参考以下文章