1.生成调用jni文件
package com.lu.myjni.so;
public class MyJni {
static {
System.loadLibrary("JniMy");
}
public native static String getMyName();
}
2.javac -h *.java
生成jni头文件。
#include
/* Header for class com_lu_myjni_so_MyJni */
#ifndef _Included_com_lu_myjni_so_MyJni
#define _Included_com_lu_myjni_so_MyJni
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_lu_myjni_so_MyJni
* Method: getMyName
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_lu_myjni_so_MyJni_getMyName
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
3.根据jni头文件实现jni 源代码文件
JNIEXPORT jstring JNICALL Java_com_lu_myjni_so_MyJni_getMyName
(JNIEnv *env, jobject obj){
return (*env)->NewStringUTF(env,"Hello Jni luchunjun !!!");
}
3.Android.mk
配置共享库的源代码文件,共享库的名称。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JniMy
LOCAL_SRC_FILES := com_lu_myjni_so_MyJni.c
include $(BUILD_SHARED_LIBRARY)
4.Application.mk
配置so的cpu架构
APP_ABI := all
5.ndk-bulid 命令编译文件
输出如下
F:\myjni\jni>ndk-build
[armeabi-v7a] Compile thumb : JniMy <= com_lu_myjni_so_MyJni.c
6.adb shell ls -l /data/data/com.example.something/lib/ 查看apk中是否存在so文件。
C:\Users\admin>adb shell ls -l /data/data/com.lu.myjni/lib/
-rwxr-xr-x system system 5088 1979-12-30 23:00 libJniMy.so