JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)

                     window 下 AndroidStudio JNI开发环境搭建以及Test Project

开发环境:

windows 7

AS2.1.2

1. NDK下载和环境配置

1.1   点解studio 工具File --》ProjectStructure--》SDK Location

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第1张图片
点击download 下载ndk ,ndk会下载到对应sdk 目录下:sdk\ndk-bundle

1.2 配置NDK


JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第2张图片

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

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第3张图片

2.1 新建好的项目如下:


JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第4张图片

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


JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第5张图片

2.3  然后在app\build.gradle 

加上这段代码:

ndk{

moduleName “MyLibrary”

}

sourceSets.main{

jni.srcDirs = []

jniLibs.srcDir “src/main/libs”

}

别加错位置了。具体见下图:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第6张图片

2.4 在gradle.properties中添加

android.useDeprecatedNdk=true

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第7张图片

2.5 然后新建JNI文件夹


JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第8张图片

2.6下面开始配置工具三个工具,分别用来编译java类文件,C文件。clean JNI工程

File--->settings-->external Tools  ,分别配置javah,ndk-build ,ndk-build clean 

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第9张图片

javah配置:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第10张图片

ndk-build 配置:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第11张图片

ndk-build clean 配置:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第12张图片

3. 添加对应JNI 代码:

3.1   // 1 定义一个c方法的接口  相当于在java代码中定义了一个接口 接口的实现方法是C语言实现的

public native String helloWorldFromC();

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第13张图片

Activity 中调用JNI,如图:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第14张图片

3.2 点击 external Tools javah  编译myndk

下图结果表示编译通过,同时生成了com_example_test_myjnitest_myndk.h

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第15张图片

3.3  将com_example_test_myjnitest_myndk.h 剪切到JjniI文件目录下,并且将内容全部拷贝到新建test.c中

注意 Java_com_example_test_myjnitest_myndk_sayHello 方法参数修改,具体实现在该方法内

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第16张图片

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)

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第17张图片


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

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第18张图片

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

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第19张图片

生成lib文件如图:

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第20张图片

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

JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第21张图片

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


JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例)_第22张图片

最后运行app 查看效果!

你可能感兴趣的:(JNI(NDK)开发教程二 (androidstudio JNI环境搭建和第一个实例))