1. Primero descargue e instale ndk
Herramientas de menú -》Administrador de SDK:
Si no está seleccionado significa que no está instalado, selecciónelo y haga clic en el botón "Aplicar"
para descargarlo e instalarlo automáticamente.
2. Cree un nuevo proyecto JniDemoByNDK y seleccione Actividad vacía.
3. Cree una nueva clase Java: NDKTools en com.example.jnidemobyndk:
El código para su clase es:
package com.example.jnidemobyndk;
public class NDKTools {
public static native String getStringFromNDK();
}
4. Haga clic en el menú: Construir -> Crear proyecto para compilar el archivo NDKTools.java.
5. Busque el archivo NDKTools.class:
El directorio donde se encuentra es:
D:\AndroidTest\JniDemoByNDK\app\build\intermediates\javac\debug\classes\com\example\jnidemobyndk
6. Ingrese a la interfaz de terminal (Terminal) de Android Studio e ingrese al directorio especificado:
D:\AndroidTest\JniDemoByNDK\app\build\intermediates\javac\debug\classes>
Nota: Sólo puedes ir a la capa de clases.
Luego escriba el comando:
javah -jni com.example.jnidemobyndk.NDKTools
Ingrese la clave:
si no hay errores, se generará un archivo de encabezado a nivel de clases: com_example_jnidemobyndk_NDKTools.h
7. Cree un subdirectorio jni en el directorio principal:
8. Corte el archivo com_example_jnidemobyndk_NDKTools.h al directorio jni
9. Cree un nuevo archivo cpp en jni: NDKTools.cpp (no sé por qué siempre falla al compilar al crear un archivo c. Indica que no está en formato utf-8, pero obviamente es un utf-8 formato de archivo, por lo que debe crear un archivo cpp aquí).
10. Agregue el siguiente código a NDKTools.cpp
#include <string>
#include "com_example_jnidemobyndk_NDKTools.h"
JNIEXPORT jstring JNICALL
Java_com_example_jnidemobyndk_NDKTools_getStringFromNDK
(JNIEnv *env, jclass){
//std::string hello = "Hello from C++";
//return env->NewStringUTF(hello.c_str());
return env->NewStringUTF("Hellow World,这是隔壁老李头的NDK的第一行代码");
}
11. Agregue una línea de código al control TextView en Activity_main.xml
android:id="@+id/tv"
12. Agregue el siguiente código al código MainActivity.java:
String text = NDKTools.getStringFromNDK();
Log.i("gebilaolitou","text="+text);
((TextView)findViewById(R.id.tv)).setText(text);
13. Agregue build.gradle:
En configuración predeterminada:
ndk{
moduleName "ndkdemotest-jni"
abiFilters "armeabi-v7a", "x86"
}
En tipos de compilación:
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDirs = ['src/main/jniLibs']
}
14. Agregue el archivo Android.mk en el directorio src/main/jni/
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndkdemotest-jni
LOCAL_SRC_FILES := NDKTools.cpp
include $(BUILD_SHARED_LIBRARY)
15. Agregue el siguiente código a NDKTools.java
static {
System.loadLibrary("ndkdemotest-jni");
}
16. Comience a compilar y complételo de una vez. entonces ubicación de almacenamiento
D:\AndroidTest\JniDemoByNDK\app\build\intermediates\merged_native_libs\debug\out\lib\armeabi-v7a
generalmente tiene varios lugares.
————————————————
Reimpreso en: https://blog.csdn.net/yaotianhao1005/article/details/106523049/