AndroidStudio下开发NDK基于CMAKE方式笔记

2017-06-03  本文已影响0人  siriusF

  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、共享库的分享

上一篇下一篇

猜你喜欢

热点阅读