为啥我无法将调试器附加到已签名的 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 进程?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要等待调试器,然后将调试器附加到进程?

为啥我无法将调试器附加到在此订阅中运行的应用服务?

Node.js 调试 - 无法附加调试器子进程

无法在 Google Play 中更新应用(apk 在调试模式下签名)。可能是密钥库问题

vs2017 调试附加进程 结束进程为啥很卡慢

暂停进程以留出时间让调试器附加