Android Studio NDK(工程配置篇)
在 Android Studio 中开发 NDK 和以往的 Eclipse ADT 不同, 现在 Android Studio 除了支持 Android.mk 之外还支持使用 CMake 来作为其 c/c++ 的构建工具.
Android.mk
用于向构建系统描述源文件和共享库. 它实际上是一小段一小段的 Makefile 片段. 主要用于定义构建系统和环境变量所未定义的项目范围设置.
配置项目
在 Android Studio(截止 2.3.3 版本) 中使用 Android.mk 需要自己手动来进行配置 (Gradle).
1.PNG
如图 1
打开 project 中需要添加 ndk 的 module 的 build.gradle,
图中的配置意思是:
1, Android.debugConfig.externalNativeBuild
配置编译过程的参数
可以添加如下图 2 的配置:
2.PNG
如果熟悉 c/c++ 开发, 应该对 cflag/cppflag 这些参数不陌生. 具体需要根据项目来进行配置. 比如需要使用 c++11
则可以配置:
cppFlags "-std=c++11"
在图 1 中配置的 abiFilters 是指定编译指定 CPU 架构 x86 与 armeabi-v7a 两种.
1, Android.debugConfig.ndk
装载打包配置
在图 1 中的配置表示只会将 x86 与 armeabi-v7a 打包进入 apk,
这个配置可以保证, 如果引用的第三方库存在全架构的库文件, 而不会把所有的都打包进入 apk 中.
2, Android.externalNativeBuild
建配置文件路径
这个路径可以随意填写, 相对路径地址与 build.gradle 文件同级.
编写好 Android.mk 之后, 当我们在执行打包的时候就会先将配置的静态 / 动态编译出来.
3.PNG
CMake
跨平台的编译配置工具, 它可以根据配置来生成不同平台, 不同编译器的 Makefile,vs sln 等. 通过编写 CMakeLists.txt 可以控制编译过程.
Cmake 的配置方法与 Android.mk 的方式基本一样. 区别只在两个 externalNativeBuild 中的 ndkBuild 换成 cmake 就可以了.
4.PNG
CMakeLists.txt 的语法相对比 Android.mk 更简单.
使用的比较多的配置就下面几种:
set(x y)
设置一个变量 x 值为 y
file(GLOB x y z ...)
集合 x 存放有 y,z..., 一般涌来配置自己的源文件
add_library(x STATIC/SHARED IMPORTED)
添加一个静态 / 动态库, 方式为导入
set_target_properties(x PROPERTIES IMPORTED_LOCATION y)
配合上面的使用设置导入路径
include_directories(x)
引入头文件路径 x, 这样我们自己编写的代码中能够使用 #include <> 而不需要使用 #include ""
add_subdirectory(x)
会去查找 src/main/cpp/librtmp 目录下查找 CMakeLists.txt 文件, 并加入到当前构建中 (分模块)
target_link_libraries(x y z ...)
链接库 (就是配置我们自己编写的 c/c++ 的依赖, 和 java 中配置 jar 包一个意思)
给大家看一个我工程当中用到的一个例子:
5.PNG
在例子中第四行我引入了另一个 CMakeLists.txt, 在这个 txt 中会编译一个静态库, 能够作为预编译库来使用:
6.PNG
小编帮大家整理了一些资料, 需要的加 QQ 群: 4112676
来源: http://www.jianshu.com/p/e12e65b1f01e