unity studio r16 que not ndk configured android c eclipse jni android-ndk

android - studio - ndk r16



¿Alguna forma simple o fácil de depurar el código NDK de Android? (4)

Estoy buscando una forma de depurar fácilmente el código C en una aplicación Android NDK usando Eclipse. He leído formas de depurar la aplicación usando gdb o algo similar, pero lo que quiero es una forma de enviar mensajes a Eclipse de alguna manera.

Estoy buscando una solución que sea tan simple como usar una función de impresión en C y verla en el registro DDMS o algo similar. ¿Alguien tiene alguna experiencia haciendo esto?


ADT 20 incluye un plugin NDK que proporciona soporte para construir y depurar proyectos NDK en Eclipse. Este documento describe cómo instalar y usar el plugin NDK. Las instrucciones son bastante sencillas y constan de solo unos pocos pasos.

Esta es la solución más simple que encontré y funcionó para mí.

Nota: Si está utilizando el paquete ADT, solo necesita instalar las herramientas de desarrollo C con la instalación de un nuevo software (consulte la captura de pantalla) y puede ir a la sección "Uso del complemento NDK" inmediatamente.

Editar: Parece que hay un problema con CDT en eclipse juno http://code.google.com/p/android/issues/detail?id=33788 hace que el depurador de eclipse no pueda encontrar los puntos de interrupción. La solución que utilicé es iniciar la aplicación en modo de depuración (no depurar como aplicación nativa sino depuración "regular") y luego en la línea de comando fui a la raíz de mi proyecto y ndk-gdb (esto crea el archivo gdb.setup en obj/local/armeabi carpeta obj/local/armeabi ). Después de eso, los puntos de interrupción funcionaron como siempre.

En los comentarios relacionados con el problema en el enlace anterior, sugieren algunas otras soluciones pero no las probé, ya que parecían requerir más esfuerzo que esto.



La forma más fácil es, probablemente, redirigir las instrucciones printf () al registro del sistema (según la sección "Visualización de stdout y stderr" del manual de referencia oficial de ADB) .

Escriba estos 3 comandos en una línea de comando:

adb shell stop adb shell setprop log.redirect-stdio true adb shell start

Luego puede ver el resultado de sus declaraciones "printf ()" mirando la ventana "LogCat" de Eclipse Debugger, o tipeando esto en una línea de comando:

adb logcat

Solo tenga en cuenta que, dado que los datos se almacenan en el búfer antes de transferirlos desde el emulador o dispositivo, definitivamente debe enjuagar el búfer de stdout, por ejemplo:

printf("Hello, I am %d years old!/n", 30); fflush(stdout);

Debería ver un mensaje de registro que comienza con "I / stdout:"


Puede usar las funciones de registro de Android:

#include <android/log.h> #define APPNAME "MyApp" __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "The value of 1 + 1 is %d", 1+1);

Asegúrese de vincular también con la biblioteca de registro en su archivo Android.mk:

LOCAL_LDLIBS := -llog