1、开发环境
1)在Mac Os下安装64位的AndroidStudio
2)配置好Android开发环境采用JDK1.8,适用的SDK
3)在官网或者用Android studio安装其中包括CMake,以及LLDB如下图所示:
2、NDK开发实例
示例内容为Android应用层定义一个Button,点击后弹出一个Toast显示内容来自native层,内容为“Hi,I come from native”。
1)开启Android studio选择“start a new Androidstudio project”
2)命名application name为“SimpleNdkDemo”同时勾选“include C++ support”,下一步,依据自己的SDK级别,选择,这里选择最小SDK为19,再下一步,最后为了方便,我们选择“Empty Actvity”接着一直下去,采用默认,然后完成基本工程的创建。
3)完成好的目录结构如下:
完成好的目录结构我们发现多了一个cpp文件夹,其实这个是我们选择编写jni实现的地方,该文件夹可以删除,同级创建一个jni目录,功能是一样的,只是最后编写CMakeLists.txt的路径不同。
4)我们先简单完成应用层的基础页面和调用如下:
5)开始写JNI方法,不采用上来就直接在MainActivity中定义的方式,我们定义一个新包名字为“jnibridge”并在该包下声明一个类为“JNIHandler”,结构如图所示。
6)实现JNIHanlder类如下所示:
此时看到提示,我们将光标防盗括号前如图所示
采用快捷键“Alt+Enter”创建这个JNI方法,会自动在cpp原有路径下的cpp文件中创建方法如下图所示
“native-lib.cpp”为创建工程时候所自行创建我们可以修改他,重命名为“native-message-lib.cpp”如图所示
如果此时直接就去完成后面的配置,那么你会发现此事还可能通不过,提示你没有实现你的jni方法,我们需要做的是如下图所示添加“extern“C””如下图所示:
7)修改native-message-lib.cpp,将return value修改为“Hi,I come from native”,如下图所示:
是因为C++是面向对象的,要实现面向过程的需要用C的方式,至此native jni的实现已经完成,下面讲添加如何配置。
3、NDK配置
1)CMakeList.txt,完成库的指定和编译,该文件定义在cpp路径中,如下图所示:
由于我们静态引入的库为“test-native”最后实现后你会发现其实是libtest-native.那么CMakeLists.txt定义些什么呢,如图所示:
具体什么意思,可以百度,不赘述。
2)App下的build.grale配置如下图所示:
可以照着配置,具体每个task或者属性为什么意思,可以网络搜索,答案将更详细。
3)MainActivity中的调度如下:
至此所有配置已经完成,那么掩饰效果是什么样子的呢?
4、编译结果
至此实现完成,
5、共享库的分享