android - 没有可调试的进程并将调试符号分配给 .so 文件

标签 android android-studio debug-symbols

我正在 Nexus 6P 上运行一个应用程序。但是当我使用 Android Studio 时,它显示“未检测到可调试进程”。虽然我从 logcat 收到日志消息。为什么我会遇到这个问题?

我有几个共享库 .so 文件。在启动 apk 时它告诉我调试这个 apk,我需要用这个 .so 文件添加调试符号。

如何为这个 .so 文件分配调试符号?

最佳答案

android 构建系统在这种方式上并不是很直接,部分原因是 gradle 对构建类型不强制。默认情况下,gradle 没有像 debug 和 release 这样的构建类型,android 插件是默认添加的。

cmake原生构建正确构建debug和release变体,并将它们放入最终结果APK或AAR的相应构建类型中。

默认情况下,Android Studio 会构建调试版本,您必须明确将其更改为没有调试版本,因此很可能您已经有了调试符号。

一件重要的事情是,出于某种原因,android 项目链接仍未修复,因此如果您有一个使用 Android 库的应用程序链接,那么实际上它将在发布时链接库,无论关于应用程序的构建类型,请参见此处:https://stackoverflow.com/a/20617949/2880011这样就可以没有来自 Android 库的 native 代码的调试符号。

对于预构建,您必须确保在 native 构建系统中链接到正确的库,因此在 cmake 中您必须相应地检测并链接它,但即便如此,APK 打包器也可能会忽略这一点并 bundle 相同的变体调试和发布。

Android Studio 也有一些本地调试的先决条件,请参阅此处:https://developer.android.com/studio/debug/index.html

关于android - 没有可调试的进程并将调试符号分配给 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387392/

相关文章:

java - 将 TextView 或 TextView 数组传递给 Android 中的函数

android - getActionBar() 返回 Null (AppCompat-v7 21)

安卓 : How to use mFusedLocationClient callback (resulting location) in current mainthread

java - 动态添加 JAR 到 Gradle 依赖项

java - 即时应用程序 : How to add external libraries?

c++ - 如何将 strip 与 split-dwarf 结合使用?

c++ - clang:从输出中剥离类名

java - Android更改目标sdk

java - Android studio,从插入类的类中继承变量

c++ - 在 Qt Creator 中访问内部项目库的调试符号?