记录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_包名类名本地方法名来组织就行了。

参考工程

https://github.com/lvfanzai/Thfirst