android集成ndk,Android Studio集成NDK

  • Post author:
  • Post category:其他


这篇文章主要关于studio2.3通过includeC/C++ 方式来集成NDK。

1、新建项目过程中主要注意这个地方

0818b9ca8b590ca3270a3433284dd417.png

后面都是Next即可

最后一步两个都勾选吧

0818b9ca8b590ca3270a3433284dd417.png

2、项目结构中主要关注这几个地方

1⃣️这里是生成so文件的地方,至于如何生成so文件,生成几个so文件,都是由后面的CMakeLists.txt文件来决定的

0818b9ca8b590ca3270a3433284dd417.png

2⃣️ cpp目录以及CMakeLists.txt文件

0818b9ca8b590ca3270a3433284dd417.png

如果在cpp目录上右键new没有出现所谓的C/C++ Source File,则说明你没有添加Ndk支持,可以在preferences->plugins->Android NDK Support,选中后点击OK重启Studio即可。

如果想知道如何创建cpp目录以及CMakeLists.txt文件,建议参考

创建原生源文件以及Make脚本

重点介绍一下CMakeLists.txt文件

NDK官网之CMake

此处借鉴某网络资源

0818b9ca8b590ca3270a3433284dd417.png

正如图片所描述的,一个add_library即一个so文件,在一个add_library中添加多个方法,都会写到改so文件中。

3、让我们新建一个so文件来让java代码调用

在cpp目录中我们新建了com.lhj.messi.ndktest.NdkTest.h文件,以及liuhuajian-lib.cpp文件

0818b9ca8b590ca3270a3433284dd417.png

在java目录下新建了NdkTest类,内部代码如下

0818b9ca8b590ca3270a3433284dd417.png

CMakeLists.txt文件内容

0818b9ca8b590ca3270a3433284dd417.png

项目rebuild之后,就在app->build->intermediates->cmake->debug中生成了so文件

0818b9ca8b590ca3270a3433284dd417.png

运行项目结果如图

0818b9ca8b590ca3270a3433284dd417.png

是不是跟.cpp文件中的输出代码一样

0818b9ca8b590ca3270a3433284dd417.png

常见问题:

1.编译出错

0818b9ca8b590ca3270a3433284dd417.png

主要是c或c++文件格式导致的

0818b9ca8b590ca3270a3433284dd417.png