如何让 NDK 调试在 Android Studio 中工作?

How to get NDK debugging to work in Android Studio?

Android Studio 不会在 C++ 代码的断点处停止,这是我目前所做的:

  1. 在AndroidManifest.xml中:

    android:debuggable="true"
    
  2. 在build.gradle(可能是这个问题):

    sourceSets.main {
      jniLibs.srcDir 'src/main/libs'
      jni.srcDirs = []
    }
    
    task ndkBuild(type: Exec) {
      commandLine android.ndkDirectory.getAbsolutePath() + '\' + 'ndk-build.cmd', '-C', file('src/main/jni').absolutePath, 'NDK_DEBUG=1'
    }
    
    tasks.withType(JavaCompile) {
      compileTask -> compileTask.dependsOn ndkBuild
    }
    
    1. 在 Android Studio

    2. 上将应用程序配置为本机应用程序
    3. 在 C++ 代码中放置断点

    4. 调试应用程序

这似乎有效,因为它说:"Now Launching Native Debug Session" 此外,我可以使用停止按钮暂停应用程序,但没有断点在工作。

感谢您的帮助

根据您的 build.gradle 语法,您似乎没有使用 experimental plugin for gradle, 没有它,您将无法在 android 工作室中调试本机 c/c++。 有关更多信息,请阅读:Android NDK Preview

此代码实验室可能会有所帮助:

https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#4

调试在第 5 步

  1. 在运行->调试配置"Debugger"选项卡中,选择调试类型"Native"。在"Before launch"的领域,如果Android工作室报告有冲突,接受'fix'的推荐。 Android studio 将下载 lldb 库。

  2. 单击 'debug' 底部并等待调试器附加到进程。

  3. 现在您可以在调试窗口中看到变量。

如果您还在寻找,Android Studio 最近添加了对 ndk-build 和 CMake 项目直接集成的支持:http://tools.android.com/tech-docs/external-c-builds

亲切的问候, 乔莫

你可以试试这个:

1.in app/build.gradle:

在依赖标签:

releaseCompile project(path:':youModuleName',configuration:'release')
debugCompile project(path:':youModuleName',configuration:'debug')

2.in youModule/build.gradle:

在 android 标签:

publishNonDefault true

演示:

https://github.com/sunalong/JNIDemo

Android 工作室 3

Android Studio 3 使整个过程变得微不足道。

首先,获取一个简单的示例应用程序,例如:https://github.com/googlesamples/android-ndk/tree/2020d9674a6601e8219eed2921f5028beb856a24/hello-gl2/

然后只需在 C++ 或 Java 上设置断点,然后执行:运行 > Debug

您也可以从 Java 进入 native calls 并进入 C++ 代码。

安装 LLDB 后,可以进行本机/双调试。