记录Android Studio 创建 jni 工程流程。
1. 搭建环境
2. 创建一个工程,默认apk为显示Hello world,保证编译无问题
3. 切换至Project视图,在app下新建jni目录
4. 在jni中新建.c和.h
5. 新建Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)
6. 在控制台中,切换到app目录下,运行ndk-build编译生产so
7. 打开项目工程文件local.properties,在其设置NDK路径,我的NDK示例如下:
ndk.dir=C\:\\android-sdk-windows\\ndk-bundle
sdk.dir=C\:\\android-sdk-windows
当前电脑安装ndk和sdk位置
8. 在app的build.gradle的android节点下设置:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
注意此处的是libs文件夹
9. 代码中加载so
static {
System.loadLibrary("demo");
}
10. 添加Native代码实现
jstring Java_com_ivan_jnilib_MainActivity_getStrFromJNI(JNIEnv *env,jobject thiz) { return (*env)->NewStringUTF(env, “I`m Str !“); }
Note:网上在进行Jni工程的时候,会提示利用Javah命令来生成.h文件,但是这个命令我用起来总是会出现问题,提示类不存在。
其实这一步不是必不可做的,可以省略这一步。
使用这一步的目的主要是为了方便具体实现函数。
直接在C源文件中,按照Java_包名类名本地方法名来组织就行了。