Aplicación JNI: use ndk para compilar y generar

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/

Supongo que te gusta

Origin blog.csdn.net/weixin_42602900/article/details/133028651
Recomendado
Clasificación