打包方式:CMake
需要的插件:NDK,LLDB
首先下载好以上环境
如果上图列表中没有CMake,LLDB等选项,很可能的原因是Android SDK Tools有问题,需要重新下载Android SDK Tools。
需要打包的.so库关系比较复杂,出现了动态库依赖动态库的情况,我们就以下例为准:
本次,我需要打一个名称为impact-lib的.so。这个库要链接libshape.so, libtile.so,libmif.so, libcar.so。
这些库是由car,mif,shape,tile4个c++工程生成的。
car,mif,shape,tile是从第三方拿到的源码,是在linux平台下建立的标准c++工程,每个目录都是独立的工程,他们之间又有依赖关系。关系如下:
libshape.so不依赖任何其他库
libtile.so依赖libshape.so
libmif.so依赖libshape.so, libtile.so
libcar.so依赖libshape.so, libtile.so, libmif
为此,我建立了gen-libs模块专门用于提前生成上边4个库,模块的结构如上图,在src/main/下建立cpp目录,并把car,mif,shape,tile工程拷贝进去。
在cpp目录下手动建立CMakeLists.txt文件
gen-libs模块需要以下配置:
其中abiFilters可自行配置平台目标
cppFlags表示对c++11的支持
cmake.path配置成上一步建立好的CMakeLists.txt所在的相对路径,相对路径指的是相对于build.gradle。
确保以下路径配置是正确的:
添加的模块都在这里出现: