window 下 AndroidStudio JNI开发环境搭建以及Test Project
开发环境:
windows 7
AS2.1.2
1. NDK下载和环境配置
1.1 点解studio 工具File --》ProjectStructure--》SDK Location

1.2 配置NDK

2.ndk环境搭建好,新建Test 测试工程

2.1 新建好的项目如下:

2.2检测local.properties 文件里面是否有ndk的路径,没有加上。

2.3 然后在app\build.gradle
加上这段代码:
ndk{
moduleName “MyLibrary”
}
sourceSets.main{
jni.srcDirs = []
jniLibs.srcDir “src/main/libs”
}
别加错位置了。具体见下图:

2.4 在gradle.properties中添加

2.5 然后新建JNI文件夹

2.6下面开始配置工具三个工具,分别用来编译java类文件,C文件。clean JNI工程
File--->settings-->external Tools ,分别配置javah,ndk-build ,ndk-build clean

javah配置:

ndk-build 配置:

ndk-build clean 配置:

3. 添加对应JNI 代码:
3.1 // 1 定义一个c方法的接口 相当于在java代码中定义了一个接口 接口的实现方法是C语言实现的
public native String helloWorldFromC();

Activity 中调用JNI,如图:

3.2 点击 external Tools javah 编译myndk
下图结果表示编译通过,同时生成了com_example_test_myjnitest_myndk.h

3.3 将com_example_test_myjnitest_myndk.h 剪切到JjniI文件目录下,并且将内容全部拷贝到新建test.c中
注意 Java_com_example_test_myjnitest_myndk_sayHello 方法参数修改,具体实现在该方法内

3.4jni文件目录下,新增andrond.mk
/ andrond.mk 告诉编译器 如何把c代码打包成函数库
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestHello (库函数名字)
LOCAL_SRC_FILES := test.c (接口C语言实现的文件名)
include $(BUILD_SHARED_LIBRARY)

3.5 把c代码 打包成函数库 ,右击test.c文件 ,external Tools --》ndk-build

编译成功,无错误,如下图

生成lib文件如图:

3.5 在myndk java代码中 引入库函数 // 注意事项 去掉前面的lib 后面的.so 用于加载lib文件

3.6 在Activity代码中调用myndk JNI 接口

最后运行app 查看效果!
网友评论