Your SlideShare is downloading. ×
0
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Compilar y Debug en Android
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Compilar y Debug en Android

8,841

Published on

compilar y depurar en Android NDK con Eclipse

compilar y depurar en Android NDK con Eclipse

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
8,841
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
56
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Compilar y depurar con NDK usando Eclipse Windows Iván Pajuelo [email_address] twitter.com/DrQubit
  • 2. Compilación de aplicaciones nativas con Eclipse
  • 3. Valores utilizados en este montaje
    • {CYGWIN} = c:/android/cygwin
    • 4. {HOME} = c:/android/ndk/samples
    • 5. {JDK} = c:/android/jdk
    • 6. {NDK} = c:/android/ndk
    • 7. {SDK} = c:/android/sdk
    • 8. HOME = /cygdrive/c/ndk/samples
    • 9. NDK = /cygdrive/c/ndk
    Las variables de entorno utilizadas por Cygwin (NDK y HOME) es mejor definirlas con el formato 'cygdrive/...' para evitar el warning que da Cygwin al usarlas.
  • 10. Pre-requisitos
    • Instalar Eclipse
    • 11. Instalar JDK
    • 12. Instalar Android SDK
    • 13. Instalar Eclipse ADT
    • 14. Instalar Cygwin (incluyendo gcc y make)
    • 15. Instalar Eclipse CDT
    • 16. Instalar Sequoyah Android Native Code Support
    • 17. Añadir las variables de entorno NDK y HOME
    • 18. Añadir al path {JDK}/bin, {SDK}/tools y {SDK}/platform-tools
  • 19. Uso del ayudante Sequoyah
    • Botón derecho sobre el proyecto.
    • 20. Android tools
    • 21. Add native support
    Esto básicamente lo que hace es crear el proyecto C++ integrado en el proyecto Java. También añade una nueva perspectiva a Eclipse diseñada para trabajar con aplicaciones mixtas.
  • 22. Compilar desde Eclipse Para que la parte nativa de un proyecto compile, hay que ir a sus propiedades y rellenar [Build command] dentro de [C/C++ Build]* con la siguiente instrucción: {CYGWIN}/bin/bash.exe --login -c "cd {ProjectPath} && $NDK/ndk-build 2>&1 | awk '{gsub(/{ProjectPath}/,"");print}'" Esto ejecuta bash.exe y dentro, ejecuta los siguientes comandos: cd {ProjectPath} Nos posiciona en la raiz del directorio del proyecto. $NDK/ndk-build 2>&1 | awk '{gsub(/{ProjectPath}/,"");print}' Ejecuta el script ndk-build el cual compila la parte nativa. Con gsub, lo que hacemos es recortar el path de los errores para que eclipse pueda ir a ellos con doble clic NOTA: No olvidéis usar los caracteres de escape en el primer parámetro de gsub. *Ha de estar en una perspectiva de C/C++ (Android Native también sirve)
  • 23. Ej: (para hello-jni) c:/android/cygwin/bin/bash.exe –login -c “cd $HOME/hello-jni && $NDK/ndk-build 2>&1 | awk '{gsub(//cygdrive/c/android/ndk/samples/hello-jni//,"");print}'”
  • 24. Extra
    • En este punto ya se pueden compilar y ejecutar aplicaciones con código nativo.
    Añadir las referencias de las APIs del NDK al Indexer de Eclipse. En propiedades del proyecto, dentro de [C/C++ General]:[Paths and Symbols], en la pestaña Includes. Añadir los paths necesarios a GNU C y/o GNU C++, dependiendo de si nuestro proyecto está en C, C++ o ambos. Ej: (para API level 9) c:/android/ndk/platforms/android-9/arch-arm/usr/include
  • 25.  
  • 26. Depuración de aplicaciones nativas con Eclipse
  • 27. Cambiar el lanzador C++ por defecto
    • En el menu Window -> Preferences, ir al apartado Run/debug -> Launching -> Default Launchers
    • 28. Y en C/C++ Application, elegimos Standard Create Process Launcher
    • 29. Esto sirve para que cuando creemos configuraciones de depuración, nos utilice ese lanzador por defecto.
  • 30.  
  • 31. Modificar el script ndk-gdb Comentar la última linea: #$GDBCLIENT -x $GDBSETUP -e $APP_PROCESS Y la 5ª linea empezando por el final #echo "target remote :$DEBUG_PORT" >> $GDBSETUP La 1ª impide que se lance el cliente de GDB ya que vamos a usar Eclipse como cliente. Y la 2ª es para que el script no cree la linea “ target remote:5039 ” en el fichero gdb.setup . El cliente GDB de Eclipse no admite ese parámetro a través del fichero de configuración.
  • 32. Preparar la sesión de depuración Poner un breakpoint al principio de la ejecución de la aplicación. Por ejemplo en onCreate. No interrumpáis antes de System.loadLibrary ya que si no, la librería no estará cargada y no podréis añadir breakpoints desde el CDT. Iniciar la sesión de depuración y esperar a que el punto de interrupción sea alcanzado. ¿Para que sirve esto?: Desafortunadamente, GDB sólo se puede vincular a un proceso ya activo. Por eso necesitamos que la aplicación haya arrancado y tenga un PID válido. Este método no sirve para una aplicación nativa pura, ya que no podemos pararla con un breakpoint en la máquina virtual. NOTA: Poner Debugable=true en AndroidManifest.xml
  • 33. En este punto la aplicación está lista para que le vinculemos el GDB.
  • 34. Vincular GDB con nuestra aplicación Abrir una sesión en la consola de Cygwin. Esta sesión conviene no cerrarla para futuras depuraciones. cd {ProjectPath} Desde el directorio de nuestra aplicación, ejecutar el script: $NDK/ndk-gdb Esto, entre otras cosas, arrancará GDB y lo vinculará a nuestra aplicación.
  • 35. Configurar el cliente GDB en Eclipse para este proyecto (sólo se hace la 1ª vez) Primero hemos de crear una configuración de depuración para nuestro proyecto. Vamos al menú Run y Debug Configurations... En C/C++ Application, botón derecho -> New. En la pestaña Main: En el campo C/C++ Aplication, ponemos: {ProjectPath}/obj/local/armeabi/app_process Este fichero lo crea el script ndk-gdb, así que si no lo hemos ejecutado con éxito, no estará. Seleccionamos “Disable auto build” ya que cuando iniciemos la sesión de depuración, la aplicación ya la tenemos compilada y corriendo. (Aunque parada en un VM Breakpoint)
  • 36.  
  • 37. En la pestaña Debugger: Elegimos gdbserver como Debugger y desmarcamos la casilla: [X] Stop on startup at: En la subpestaña Main: En el campo GDB debugger, ponemos: {NDK}/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gdb En el campo GDB command file, ponemos: {ProjectPath}/obj/local/armeabi/gdb.setup Y marcamos la casilla: [X] Verbose console mode En la subpestaña Connection: Type: TCP Host name or IP address: localhost Port number: 5039
  • 38.  
  • 39. Depuración de aplicaciones nativas puras con Eclipse
  • 40.  

×