AndroidStudio的jni初步实验
首先在AS上安装好NDK环境
File ->Project Structure 中配置好NDK路径
接着,进入MainActivity,创建交互用的方法
private native String _getString();并在onCreate方法中调用
调用javah生成.h头文件,注意javah在jdk10开始就不在使用,可以切换成jdk8,或者使用javac -h方法(本人使用的是jdk8)。
还有一种较为简单的方法,在AndroidStudio的Preference的External Tool中配置
具体填写方法如上
运行以后会在app下生成.h文件
此时,新建.c文件,在里面编写代码,方法名就是.h文件中产生的方法名
例如:
JNIEXPORT jstring JNICALL Java_com_example_ndkdemo_MainActivity__1getString
(JNIEnv *, jobject);
具体的函数逻辑可以在.c中编辑
此外还要导入两个文件在同一个目录中
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com_example_ndkdemo_MainActivity
LOCAL_SRC_FILES := jnipro.c
LOCAL_ARM_MODE := arm
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := all
各自的配置可以去自行查询
在build.gradle中还要进行配置
externalNativeBuild {
ndkBuild {
path “src/main/jni/Android.mk”//指定Android.mk路径
}
}
ndk {
moduleName “com_example_ndkdemo_MainActivity”//包名
}
最后在MainActivity中
static {
System.loadLibrary(“com_example_ndkdemo_MainActivity”);
}
在命令行窗口进入
/Users/zuoliang/Downloads/ndkdemo/app/src/main/java
执行ndk-build目录得到so文件即可