Как заставить отладку NDK работать в 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. поставить точки останова в коде C++

    3. отладка app

это, кажется, работает, потому что он говорит : "теперь запуск собственного сеанса отладки", кроме того, я могу приостановить приложение с помощью кнопки "стоп", но точка останова не работает.

Спасибо за помощь

7 ответов


по синтаксису вашей сборки.gradle выглядит так, как будто вы не используете экспериментальный плагин для gradle, без него вы не сможете отлаживать родной c / C++ в Android studio. Для получения дополнительной информации прочитайте это : Android NDK предварительный просмотр


  1. на вкладке Run->Debug Configuration "Debugger "выберите тип отладки как"Native". В поле "перед запуском", если Android studio сообщает о конфликтах, примите рекомендацию "исправить" его. Android studio загрузит библиотеку lldb.

  2. нажмите на "отладка" внизу и подождите, пока отладчик не будет подключен к процессу.

  3. теперь вы можете увидеть переменные в окне отладки.


Если вы все еще ищете, Android Studio недавно добавила поддержку прямой интеграции проектов ndk-build и CMake:http://tools.android.com/tech-docs/external-c-builds

с наилучшими пожеланиями, Джомо!--3-->


с символы отладки установлен, один был родной / двойной отладки.

Run/Debug Configurations


вы можете попробовать это:

1.в app / build.Gradle в:

на ярлык зависимостей:

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

2.в youModule / build.Gradle в:

на ярлыке андроида:

publishNonDefault true

демо:

https://github.com/sunalong/JNIDemo


Android Studio 3

Android Studio 3 делает весь процесс тривиальным.

для начала, получить ваши руки на простой пример приложения, такие как: https://github.com/googlesamples/android-ndk/tree/2020d9674a6601e8219eed2921f5028beb856a24/hello-gl2/

затем просто установите точки останова на C++ или Java и выполните: Run > Debug

вы также можете войти родной называет из Java и попадают в C++ код.

enter image description here


эта codelab может помочь:

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

debug находится на шаге 5