NDK开发笔记---CMake构建JNI
来源:互联网 发布:windows update卡在100 编辑:程序博客网 时间:2024/06/08 13:46
从AndroidStudio2.2版本开始,默认使用 CMake 的方式来构建NDK项目,也可以使用 ndk-build 的方式,这里我们主要介绍 CMake 的方式。
首先,介绍 NDK 的下载与安装,在SDK设置那个页面,选择SDK Tools面板,就可以下载NDK。
如图所示,需要下载CMake、LLDB、NDK组件:
- NDK
- CMake
- LLDB
默认创建带C/C++ 支持的项目
- C++ Standard
- Exceptions Support
- Runtime Type Information Support
- cpp目录存放C/C++的头文件或者源文件
- External Build Files存放我们的CMake脚本文件,这是通过Gradle来进行配置的。
项目自动生成的部分c++代码:
自动生成的部分Java代码:
自动生成的build.gradle文件:
android里多了:externalNativeBuild { cmake { path "CMakeLists.txt" }}
defaultConfig 里多了:externalNativeBuild { cmake { cppFlags "" }}
我们可以看下CMakeLists.txt里面的配置:
- add_library
里面有三个参数配置:
native-lib:设置库的名字为native-lib,名字可以任意,但是要和System.loadLibrary("native-lib");保持一致 。
SHARED:可以分享的,动态库。
src/main/cpp/native-lib.cpp:配置源文件或者头文件的路径
- find_library
将find_library()命令添加到CMake构建脚本中以定位NDK库,并将其路径存储为一个变量。可以使用此变量在构建脚本的其他部分引用NDK库。
log:找到log模块
- target_link_libraries
指定要关联到原生库的库,第一个自然是我们add_library里面指定的库名字native-lib库,然后可以看到${log-lib},也就是引用了find_library里面定义的日志库。
经过上面一系列的配置,项目就可以正常运行起来了。
实例:
我们可以稍微修改代码,然后传一个字符串,在界面显示出来
输出的结果为:
为已有项目添加C/C++支持
在cmake-jni的目录下面创建一个File,名字为CMakeLists.txt,推荐使用这个名字和文件路径。
注意:必须先创建源文件,否则下面创建CMake脚本同步的时候不会通过。
注意:
1. 路径一定要注意跟我们所创建的目录名字一致,注意你创建的是“jni”还是“cpp”目录,否则同步不了。例如我们刚刚通过 Android Studio 创建的目录实质上是“jni”目录,因此这里写jni。你也可以手动创建 cpp目录,然后这里写 cpp目录,与标准的项目一样。
2.我们创建的有可能是 C 也有可能是 C++,所以这里要注意写 .c 还是 .cpp 后缀,否则同步会失败。
然后选中 app,右击,选择下图中的选项:
找到我们创建的脚本文件,确认:
Android Studio 就会自动同步,然后在 cmake-jni模块的 build.gradle文件自动添加配置:
输出的结果为:
参考文章:
http://mp.weixin.qq.com/s/5DHJa5E-lZzy21-9edxoIg
http://mp.weixin.qq.com/s/_qwK5VNI40TO44eonDLo2
http://blog.csdn.net/qq_35071078/article/details/70544766
- NDK开发笔记---CMake构建JNI
- JNI NDK开发笔记
- AndroidStudio JNI NDK CMake
- JNI NDK (AndroidStudio+CMake )
- CMake构建NDK
- AS2.2使用CMake方式进行JNI/NDK开发
- AS2.2使用CMake方式进行JNI/NDK开发
- AS2.2使用CMake方式进行JNI/NDK开发
- JNI NDK (AndroidStudio+CMake )开发第一个项目的流程
- AS2.2使用CMake方式进行JNI/NDK开发
- AS2.2使用CMake方式进行JNI/NDK开发
- Android-Ndk Cmake编译JNI
- 我的Android NDK之旅(三),使用cmake来构建Jni
- ndk配置+android jni开发笔记
- NDK开发学习笔记—JNI入门
- NDK开发--CMake篇
- JNI NDK (AndroidStudio+CMake )环境集成详解
- Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
- Python eval 函数的使用
- 工作笔记
- mysql的分区和分表
- 查看和修改linux的PATH环境变量的方法
- 入门C#之数据库增删改查I
- NDK开发笔记---CMake构建JNI
- 《社会性动物》之如何让别人喜欢你
- activemq 和webservice 的区别
- 【0049】SQL数据定义语言--表约束
- matplotlib学习—绘制简单自定义曲线
- 【大数据部落】R在GIS中用ggmap地理空间数据分析
- [汇总信息] Laravel 上使用 phpexcel的两种方式
- hdu 4193 单调队列
- Java高级开发工程师面试