Depuración NDK de Android: armeabi-v7a no funciona

Eclipse / Cygwin

NDK 8c

Creación de una biblioteca compartida

No puedo conseguir que gdbserver comience más después de cambiar a armeabi-v7a. He buscado en línea durante horas, pero no puedo encontrar un tema que se ocupa específicamente de armeabi-v7a problemas de depuración.

No tengo opción de cambiar a armeabi-v7a debido al uso de una biblioteca de terceros que depende de ello. Sin él, consigo este tipo de errores:

D:\TEMP\ccnnGAqD.s:10427: Error: selected processor does not support Thumb mode `ldrex r6,[r3]' D:\TEMP\ccnnGAqD.s:10429: Error: selected processor does not support Thumb mode `strex r4,r5,[r3]' 

Todo funcionaba bien antes con 'armeabi', usando esta configuración: http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

El único cambio que he hecho es agregar esto a Application.mk:

 APP_ABI := armeabi-v7a 

En la parte inferior de la biblioteca compartida Android.mk agregué esto:

 $(info TARGET_ARCH = $(TARGET_ARCH)) $(info TARGET_ARCH_ABI = $(TARGET_ARCH_ABI)) $(info TARGET_ABI = $(TARGET_ABI)) 

Que da como resultado lo siguiente:

 TARGET_ARCH = arm TARGET_ARCH_ABI = armeabi-v7a TARGET_ABI = android-14-armeabi-v7a 

He desinstalado la aplicación mediante

 adb uninstall com.example.game 

AndroidManifest.xml tiene la propiedad android: debuggable = "true".

Hecho un "limpiar todo" en Eclipse, y eliminar manualmente las carpetas ./libs y ./obj. Entonces, las salidas ndk-build a las carpetas correctas (obj / local / armeabi-v7a y libs / armeabi-v7a), y obj / local / armeabi y libs / armeabi no existen.

Sin embargo, esto es lo que sucede cuando ejecuto ndk-gdb:

 user@MACHINENAME /cygdrive/e/projects/game $ ndk-gdb-eclipse --force --verbose Android NDK installation path: /cygdrive/e/projects/sdks/android-ndk Using default adb command: /cygdrive/e/projects/sdks/android-sdk/platform-tools/adb ADB version found: Android Debug Bridge version 1.0.31 Using ADB flags: Using auto-detected project path: . Found package name: com.example.game ABIs targetted by application: armeabi Device API Level: 15 Device CPU ABIs: armeabi-v7a armeabi Compatible device ABI: armeabi Using gdb setup init: ./libs/armeabi/gdb.setup Using toolchain prefix: /cygdrive/e/projects/sdks/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi- Using app out directory: ./obj/local/armeabi Found debuggable flag: true ERROR: Could not find gdbserver binary under ./libs/armeabi This usually means you modified your AndroidManifest.xml to set the android:debuggable flag to 'true' but did not rebuild the native binaries. Please call 'ndk-build' to do so, *then* re-install to the device! 

Observe las "ABIs dirigidas por aplicación" usando el "armeabi" incorrecto. Aquí está la parte relevante de ndk-gdb:

 get_build_var () { if [ -z "$GNUMAKE" ] ; then GNUMAKE=make fi $GNUMAKE --no-print-dir -f $ANDROID_NDK_ROOT/build/core/build-local.mk -C $PROJECT DUMP_$1 | tail -1 } APP_ABIS=`get_build_var APP_ABI` if [ "$APP_ABIS" != "${APP_ABIS%%all*}" ] ; then # replace first "all" with all available ABIs ALL_ABIS=`get_build_var NDK_ALL_ABIS` APP_ABIS_FRONT="${APP_ABIS%%all*}" APP_ABIS_BACK="${APP_ABIS#*all}" APP_ABIS="${APP_ABIS_FRONT}${ALL_ABIS}${APP_ABIS_BACK}" fi log "ABIs targetted by application: $APP_ABIS" 

Definí claramente APP_ABI a armeabi-v7a en Application.mk, así que esto es un error en el NDK? ¿O me estoy perdiendo algo?

Tuve el mismo problema. He configurado eclipse siguiendo este artículo: http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/ Luego cambio de armeabi a armeabi-v7a. Entonces no pude depurar.

He arreglado este problema:
1) Debe arreglar las carpetas en "Configuraciones de depuración"

  • Cambiar la pestaña principal … obj / local / armeabi / app_process a … obj / local / armeabi-v7a / app_process
  • La pestaña del depurador cambia … obj / local / armeabi / gdb2.setup a obj / local / armeabi-v7a / gdb2.setup
  • Cambia la pestaña del depurador … / toolchains / arm-linux-androideabi-4.4.3 / pre-construido / linux-x86_64 / bin / arm-linux-androideabi-gdb a toolchains / arm-linux-androideabi-4.6 / prebuilt / linux-x86_64 / Bin / arm-linux-androideabi-gdb

2) Puede ser esto es una solución, pero funciona. En "Configuraciones de depuración" -> Depurador-> Bibliotecas compartidas add / obj / local / armeabi-v7a y marque "Cargar símbolos de biblioteca compartida automáticamente"

  • Diálogo de alerta de Android y botón positivo
  • "La reinstalación falló debido a diferentes firmas de aplicación" - ¿posible anular?
  • Cómo importar el proyecto de estudio de android en eclipse que utilizan la biblioteca?
  • Eclipse no reconoce el objeto Display
  • Perspectivas de Android de Eclipse
  • No se puede importar com.google.android.maps.MapView
  • .execute no se puede resolver a un tipo - AsyncTask (Android)
  • ¿Cómo depurar la aplicación firmada de Android de Eclipse?
  • Phonegap iOS / Android - Enlace de la carpeta www
  • ¿No se puede resolver la importación de com.google?
  • No se puede resolver la clase com.google.android.gms.plus.Plus
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.