Android NDK 进阶之旅

JNI(NDK)开发教程二 (androidstudio JNI

2017-05-31  本文已影响67人  Mr_Ares

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

开发环境:

windows 7

AS2.1.2

1. NDK下载和环境配置

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

点击download 下载ndk ,ndk会下载到对应sdk 目录下:sdk\ndk-bundle

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中添加

android.useDeprecatedNdk=true

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 查看效果!

上一篇 下一篇

猜你喜欢

热点阅读