Colección de citas famosas - Colección de firmas - Cómo depurar ndk en Android Studio

Cómo depurar ndk en Android Studio

El proceso de llamada de Android Studio ndk es el siguiente:

El proceso de configuración de la capa NDK se llama a través de la descripción del caso jniaes

Y usamos la capa inferior. para juzgar si la firma es correcta, si es correcta, continúe ejecutando el código principal; de lo contrario, salga del programa. Esto puede evitar que otros descompilen y vuelvan a empaquetar maliciosamente.

Primero ve al sitio web oficial para descargar el último NDK, puedes colocarlo en cualquier lugar, como lo puse yo en D:\Dev\Android\android-ndk-r10d.

(1) Cree un nuevo proyecto: nombre JniAes

Primero agregue la interfaz nativa a la clase Java y preste atención a escribir la interfaz nativa y System.loadLibrary (). El código es el siguiente:

1 cadena nativa estática sincronizada pública getFromNativeIv();2 cadena nativa estática sincronizada pública getStringFromNative();3 nativa estática estática sincronizada pública int jniCheckAPP(contexto de contexto);4

Luego, el proyecto de compilación obtiene los archivos intermedios y nos centramos en el archivo .class. El archivo de clase generado después de la compilación está bien en el siguiente directorio del proyecto AS:

aes\app\build\intermediates\classes\debug\android\

(2) Siguiente , siga el archivo de clase Para generar el archivo de encabezado .h correspondiente, ejecute el siguiente comando.

Haga clic en "Ver->Herramienta Windows->Terminal" para usar la herramienta de línea de comando del terminal en Studio. Ejecute lo siguiente. comando para generar el archivo de encabezado en lenguaje c javah -d jni -classpath c:\Users\sodinochen\AppData\Local\Android\sdk\platforms\android-16\android.jar;..\..\build\intermediates\. classs\debug com.aes.jniaes.MainActivity

(3) Luego corte el archivo .h ahora mismo. Cree un nuevo archivo c en el directorio jni y asígnele el nombre que desee. El mío se llama strk.c.

El archivo strk.c se utiliza para implementar la lógica del código central y determinar si el nombre del paquete y el valor hash son legales. Si se devuelve 1, es legal. De lo contrario, es ilegal. El método de entrada es: jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,? jobject thiz)

A continuación, agregue la ruta del NDK (el NDK descargado anteriormente) en el archivo local.properties del proyecto, similar a el La ruta del SDK es la misma, la mía se agrega de la siguiente manera:

sdk.dir=D\:\\Dev\\Android\\android-sdk-windowsndk.dir=D\:\\ Dev\\Android\ \android-ndk-r10d

(4) A continuación, establezca el nombre del archivo de la biblioteca (generado como nombre de archivo) en build.gradle en el directorio del módulo de la aplicación.

Busque el elemento defaultConfig del archivo gradle y agregue el siguiente contenido:

defaultConfig { applicationId "com.aes.jniaes" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk { moduleName "checkapp-jni " ? //El nombre so generado abiFilters "armeabi", "armeabi-v7a", "x86" ? // Genera la biblioteca so bajo las tres arquitecturas abi especificadas. Prescindible por ahora. } }

(5) Finalmente, agregue el código loadLibrary de inicialización estática, agregue lo siguiente:

static { System.loadLibrary("checkapp-jni"); el archivo so? }

El archivo so compilado está en el directorio aes\app\build\intermediates\ndk\debug\lib

Entonces, ¿cómo se puede utilizar el archivo so compilado? se hace de la siguiente manera:

2. Haga referencia al archivo so

(1). Cree un nuevo directorio llamado "jniLibs" en el directorio "src/main";

.

(2). Copie y pegue el archivo so en el directorio "jniLibs".