En recherchant un problème avec les points d’arrêt dans le code natif, j’ai décidé de vérifier si ndk-gdb fonctionnait correctement. J’ai supprimé app_process, lancé le débogage Java et lancé ndk-gdb --force
. Devinez quoi, app_process n’est pas créé. ndk-gdb --verbose
sortie a cette ligne:
## COMMAND: adb_cmd pull /system/bin/app_process obj/local/armeabi-v7a/app_process remote object '/system/bin/app_process' not a file or directory Pulled app_process from device/emulator.
J’ai désinstallé l’application du périphérique cible, redémarré le périphérique et répété. Toujours pas de processus_app. Donc, je me demande quel est le problème ici, et je me demande aussi quand ce fichier est créé, et par quel processus / script.
Comme mentionné précédemment, Android 5.0 a /system/bin/app_process
comme un lien symbolique vers /system/bin/app_process32
. Comme un lien symbolique ne peut pas être adb pull
avec adb pull
, le ndk-gdb
ne pourra pas fonctionner tel ndk-gdb
.
Changez Éditeur: Le changement original est également ici: http://pastebin.com/YfxNs06U . Notez que cette modification renomme ndk-gdb
comme suit pour prendre en charge les modifications api21 ainsi que la compatibilité ascendante pour
# Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process if [ "$API_LEVEL" -lt "21" ] ; then run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS` log "Pulled app_process from device/emulator to $APP_PROCESS" else run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS` log "Pulled app_process32 from device/emulator to $APP_PROCESS" fi
# Get the app_server binary from the device APP_PROCESS=$APP_OUT/app_process APP_PROCESS_DEVICE=app_process32 if [ "$API_LEVEL" -lt "21" ] ; then APP_PROCESS_DEVICE=app_process fi run adb_cmd pull /system/bin/$APP_PROCESS_DEVICE `native_path $APP_PROCESS` log "Pulled $APP_PROCESS_DEVICE from device/emulator to $APP_PROCESS"
app_process32
en app_process
lorsqu’elle est app_process
à votre machine de développement pour prendre en charge une seule configuration de débogage dans Eclipse.
Trouvé le problème. Mon appareil exécute l’aperçu Android 5.0 et app_process un lien symbolique vers un fichier appelé app_process32. Donc, tirer app_process32 fonctionne bien.
En plus de la réponse de Violet Giraffe, échangez dans le script ndk-gdb la ligne
run adb_cmd pull /system/bin/app_process `native_path $APP_PROCESS`
avec
run adb_cmd pull /system/bin/app_process32 `native_path $APP_PROCESS`
Cela a résolu le problème pour moi pour ce problème Android 5.0 et j’ai pu créer et déboguer comme avant.