一.下载NDK
百度有很多,这里就不多说了。
二.编写一个native方法
在你的类里面写一个调用c代码的方法,用native关键字修饰。
public native String helloJni();
三.编写c代码
1.在你的项目根目录下创建一个文件夹,用jni来命名。在里面创建一个.c文件,例如:
2.编写c代码
jstring Java_com_example_jnidemo_MainActivity_helloJni(JNIEnv* env, jobject thiz) {
char* c = "hello jni";
return (*env)->NewStringUTF(env,c);
}
jstring
是返回值,因为在c里面没有string类型,所以用jstirng表示string。
Java_com_example_jnidemo_MainActivity_helloJni
是函数名,开头用Java,然后是包名和方法名,把c代码和java代码连接起来。
四.编辑Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
是清除之前的编译,因为每次编译都会放在相同的地方。
LOCAL_MODULE := hello
是你项目的名字
LOCAL_SRC_FILES := hello.c
是文件的名字
include $(BUILD_SHARED_LIBRARY)
是要编译的环境
五.使用NDK编译
1.首先需要配置NDK环境变量,请自行百度。
测试配置是否成功:
在命令提示符中输入ndk-build,显示如下提示说明配置成功。
2.进入项目根目录,输入ndk-build,编译完成会在项目libs目录下生成对应的cpu架构的.so文件。
六.使用.so文件,调用c方法
1.加载so文件,使用lang包下的System:System.loadLibrary(hello);
2.在方法里调用你的native方法,执行操作。