android - studio - ndk r13
DepuraciĆ³n de Android NDK, en Windows (1)
para una versión más reciente de NDK (estoy usando r7c), puedes crear una versión de depuración
- agregue la
android:debuggable="true"
a la etiqueta<Application>
enAndroidManifest.xml
- invocar
ndk-build
conNDK_DEBUG=1
(indicador NDK_DEBUG no es necesario si ejecuta ndk-build con shell unix)
en Windows, las cosas se vuelven un poco complicadas porque para usar ndk-gdb
, todavía necesitas bash (o cygwin) a partir de NDK r7c, pero ndk-build
ejecutándose en cygwin bash se encontrará con un problema de permisos si alguna vez utilizas alguno de los biblioteca estática construida
mi solución en la máquina de Windows es
- agregar
android:debuggable="true"
a<application
etiqueta de<application
enAndroidManifest.xml
(igual que el anterior) - en cmd (indicador de comando de Windows): invoque
ndk-build
conNDK_DEBUG=1
- en cygwin bash: ejecutar
ndk-gdb
para una investigación inicial rápida de la biblioteca nativa, cree una actividad simple con un botón para activar la función de entrada de biblioteca y loadLibrary
en la actividad como:
class MyActivity extends Activity {
static {
System.loadLibrary("mylibrary");
}
/* other functions like onCreate, etc... */
public native void libfunc();
public void onClick(View v){
libfunc();
}
}
Por lo tanto, cuando se inicia gdb
, la biblioteca en cuestión está realmente cargada, pero aún puede tener tiempo para establecer puntos de corte, etc. antes de que el programa falle; cuando termine de configurar el depurador, en el indicador (gdb)
, escriba continue
(o simplemente '' c
''), luego presione el botón para iniciar el programa de bloqueo y depuración feliz ...
Estoy portando una aplicación C compleja a Android, como una biblioteca SO, envuelta con una fina capa de Java. Después de algunas horas de problemas, tengo el código compilado bajo Android, pero por supuesto, la aplicación falla :(
Después de mirar a mi alrededor, entiendo que la única manera de depurar la aplicación C en Android es mediante gdb. Como no tengo mucha experiencia con gdb, ¿alguien puede compartir algunas ideas?
Alguien tiene un tutorial para gdb en windows :)?
Gracias