android-ndk Tutorial
Empezando con android-ndk
Buscar..
Observaciones
¿Qué es el NDK de Android?
El Kit de desarrollo nativo de Android (NDK) es una herramienta complementaria del SDK de Android que permite que partes de aplicaciones se incorporen en C / C ++. Esto es útil para:
- Compartir componentes de aplicaciones a través de plataformas (Android, iOS, Linux, etc.)
- Mejora del rendimiento para porciones críticas.
- Reutilizando bibliotecas C / C ++ existentes
El NDK proporciona encabezados y bibliotecas que permiten al desarrollador crear actividades, manejar las opiniones de los usuarios, usar sensores de hardware, acceder a los recursos de la aplicación y más, todo al mismo tiempo programar en C / C ++.
Versiones
Comenzando con Android NDK con un simple ejemplo
Usando Android Studio 2.2 y superior Native Development Kit (NDK), puede usarlo para compilar códigos C y C ++.
Puedes usar NDK descargando NDK manualmente y compilándolo o a través de CMake.
Aquí daré un flujo de proceso para instalar NDK manualmente y un código de ejemplo,
Según el sistema operativo de su sistema, puede descargar NDK desde esta ubicación https://developer.android.com/ndk/downloads/index.html .
Después de la descarga, indique la ruta en la Variable del entorno del sistema como nombre de variable " NDK_PROJECT_PATH " y el valor de la variable "ubicación de la ruta almacenada NDK".
A continuación, para integrar NDK con Android Studio, después de crear un nuevo proyecto de Android,
En gradle - propiedades locales agregar ubicación de ruta sdk como
sdk.dir=F\:\\gowtham\\Android\\sdky
android.useDeprecatedNdk = true
Luego, presione Construir - Crear proyecto (Ctrl + f9).
Su proyecto se construirá con éxito y obtendrá BUILD SUCCESFUL en el mensaje gradle build, como se muestra a continuación
Luego en la Terminal, inicialmente contendrá la ruta del proyecto.
Añada la cd app/src/main
La ruta se extenderá desde la ruta del proyecto hasta la principal.
A continuación, nuevamente Build - Make Project (Ctrl + f9).
Ahora lo encontrarás en app-build – intermediates – classes – debug , como se muestra a continuación.
Ahora, cree un nuevo archivo de clase Java en una aplicación / src / main / java, aquí creé un archivo java llamado NativeClass
Escriba una función de llamada simple con el nombre de la función y la entrada para la función. Aquí escribí la función como ejemplo y le di dos entradas enteras,
De nuevo construye el proyecto (Ctrl + f9) ,
Cuando construyas, encontrarás el archivo de clase creado en esta compilación,
Then,in terminal
`-Javah -d jni –classpath ../../build/intermediates/classes/debug`application.com.ndkapplication.NativeClass
donde, - d - para el directorio de salida - jni -Generar archivo de encabezado de estilo JNI (predeterminado) - classpath - para el cual cargar clases
Ahora cree el proyecto (Ctrl + f9), encontrará la carpeta jni creada y se creará un archivo de encabezado con el nombre que especificó en el terminal antes, como se muestra a continuación.
Ahora copie el archivo de encabezado y guárdelo como archivo .cpp o .c con el mismo nombre del archivo de encabezado en la carpeta jni.
He creado un archivo cpp como se muestra a continuación
Delete everything before **JNIEXPORT line** in this file and **add header file name** alone.
Here I am for simple example just adding two numbers and returning value to android java.
Application_com_ndkapplication_NativeClass.cpp
#include <application_com_ndkapplication_NativeClass.h>
JNIEXPORT jint JNICALL Java_application_com_ndkapplication_NativeClass_example
(JNIEnv *, jclass , jint as , jint bs){
return (as + bs);
}
Y para este ejemplo no es necesario agregar ninguna función en su archivo de encabezado.
Cree un nuevo archivo llamado Android.mk y Application.mk en la carpeta Jni
El archivo Android.mk es para describir sus fuentes al sistema de compilación.
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := application_com_ndkapplication_NativeClass.cpp
LOCAL_LDLIBS += -llog
LOCAL_MODULE := exp-jni
include $(BUILD_SHARED_LIBRARY)
para conocer detalles sobre este archivo, lea este enlace https://developer.android.com/ndk/guides/android_mk.html
Application.mk que describe los módulos nativos que requiere su aplicación.
Aplicación.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti –fexceptions
APP_ABI := armeabi-v7a armeabi arm64-v8a mips mips64 x86 x86_64
APP_PLATFORM := android-16
para conocer detalles sobre este archivo, lea este enlace https://developer.android.com/ndk/guides/application_mk.html
Now build the project again **(Ctrl + f9)**, you will find the **armeabi-v7a, armeabi, arm64-v8a ,mips, mips64, x86 and x86_64** folder created inside jniLibs.
Luego, en la actividad principal, pase la entrada y obtenga la salida para el archivo de clase nativa.
int a = 5, b = 5, res ;
res = NativeClass.example(((int) a),((int) b));
TextView textView = (TextView) this.findViewById(R.id.tv);
textView.setText(new Integer(res).toString());
Aquí di dos entradas de enteros a través de a, b y obtengo la salida de la variable res.
Y la salida obtenida se muestra en la pantalla al pasar a TextView.
Y no olvide agregar la biblioteca que especificó en el archivo Android.mk como LOCAL_MODULE como este,
static {
System.loadLibrary("exp-jni");
}
Finalmente, vuelva a compilar el proyecto (Ctrl + f9), encontrará los archivos .so creados en cada carpeta armeabi-v7a, armeabi, arm64-v8a, mips, mips64, x86 y x86_64.
Entonces ahora ejecute la aplicación, obtendrá un resultado para este ejemplo como 10.
Este es un programa básico para principiantes del NDK, la biblioteca OpenCV se puede importar aquí y también puede hacer aplicaciones de procesamiento de imágenes.










