Conceptos básicos del Android NDK [Parte 3]
¡Hola! Seguimos con los tutoriales sobre el Android NDK. En los dos capítulos anteriores ya expliqué qué es el NDK y también cómo instalarlo, por lo que en este haré una introducción de sus conceptos básicos. Este artículo es para poneros en situación para el siguiente, que será en el que hagamos nuestra primera aplicación. En este tutorial todavía no vamos a programar, puesto que creo que es muy importante tener claros ciertos conceptos antes de ponernos manos a la obra.
El lenguaje principal en una aplicación Android suele ser Java. Sin embargo, con el Android NDK escribimos en C/C++. ¿Cómo unimos Java y C? Muy fácil, siempre y cuando tengamos claros los conceptos básicos sobre JNI (Java Native Interface).
Métodos nativos
Como sabéis, las clases, métodos y variables pueden ser públicas, privadas, etc. y podemos declararlas como tal con modificadores (public, private, protected...). Gracias al JNI tenemos un modificador (native) que indica a la aplicación que ese método está escrito en lenguaje nativo. Un ejemplo podría ser:
native int suma(int numero1, int numero2);
Con esto indicamos que el método suma está escrito en C y que tiene que pasar por JNI para llegar a él.
Librerías compartidas
Las librerías compartidas son ficheros que se utilizan para enlazar ambos lenguajes: Java y C. Pueden ser de enlace estático o dinámico:
- Enlace estático: extensión .o en sistemas UNIX y .lib en Windows.
- Enlace dinámico: extensión .so en sistemas UNIX y .dll en Windows.
En este caso se usan las de enlace dinámico. No os preocupéis, esto es transparente a nuestra programación.
Importar las librerías
El proceso para importar las librerías es extremadamente sencillo. Únicamente tendremos que añadir lo siguiente a nuestro código:
static { System.loadLibrary("miLibreria"); }No hay que poner la extensión de la librería (.so o .dll).
Código nativo
El código nativo hay que compilarlo antes de poder ejecutarlo. Es aquí donde entra de lleno el NDK. C y C++ tienen unos archivos en sus códigos llamados cabeceras, con extensión .h. Estos archivos los tenemos que generar nosotros manualmente a través de la instrucción javah. Tras esto, desarrollaremos el código nativo y lo compilaremos con ndk-build. Todo esto, cabeceras, código, etc. irá dentro de la carpeta jni. En el siguiente tutorial haremos nuestra primera aplicación de ejemplo con el Android NDK. Será la toma de contacto con esta herramienta. ¡Un saludo!