web-dev-qa-db-fra.com

Comment faire en sorte que le débogage NDK fonctionne dans Android Studio?

Android Studio ne s'arrête pas aux points d'arrêt dans le code C++, voici ce que j'ai fait jusqu'à présent:

  1. Dans AndroidManifest.xml:

    Android:debuggable="true"
    
  2. Dans build.gradle (cela peut être le problème):

    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. Configuré l'application en tant qu'application native sur Android Studio

    2. Placez les points d'arrêt dans le code C++

    3. Déboguer l'application

Cela semble fonctionner car il dit: "Lance maintenant une session de débogage native". De plus, je peux mettre l'application en pause avec le bouton Arrêter, mais aucun point d'arrêt ne fonctionne.

Merci de votre aide

14
PadThai

Selon la syntaxe de votre build.gradle, vous n'utilisez pas le plug-in experimental pour gradle , Sans cela, vous ne pourrez pas déboguer le c/c ++ natif dans le studio Android . Pour plus d'informations lisez ceci: Android NDK Preview

4
VitalyD
  1. Dans l'onglet "Débogueur" de la configuration, choisissez le type de débogage "Natif". Dans le champ "Avant le lancement", si Android studio signale des conflits, acceptez la recommandation de "correction". Le studio Android téléchargera la bibliothèque lldb. 

  2. cliquez sur le bas "debug" et attendez que le débogueur soit attaché au processus.

  3. maintenant, vous pouvez voir les variables dans la fenêtre de débogage. 

6
Hong

avec LLDB installé, un débogage natif/double est disponible. 

 Run/Debug Configurations

5
Martin Zeitler

Si vous cherchez toujours, Android Studio a récemment ajouté une prise en charge pour l'intégration directe des projets ndk-build et CMake: http://tools.Android.com/tech-docs/external-c-builds

Cordialement, .__ Jomo

2
Jomo Fisher

vous pouvez essayer ceci:

1. dans app/build.gradle:

aux dépendances label:

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

2.dans youModule/build.gradle:

sur le label Android:

publishNonDefault true

démo:

https://github.com/sunalong/JNIDemo

1
sunalong

Android Studio 3

Android Studio 3 rend l'ensemble du processus trivial.

Pour commencer, mettez la main sur un exemple d'application simple tel que: https://github.com/googlesamples/Android-ndk/tree/2020d9674a6601e8219eed2921f5028beb856a24/hello-gl2/

Ensuite, définissez simplement les points d'arrêt, en C++ ou en Java, et faites: Exécuter> Déboguer

Vous pouvez également entrer dans les appels natifs de Java et tomber dans le code C++.

 enter image description here