在AndroidStudio下使用cmake编译出静态链接库的方法
这个是个巨坑,目前还没有找到真正有效的方法利用cmake的途径获取适用于Android平台下的.a文件,但找到一个比较讨巧的方法,是在stackoverflow上面看到的一位外国人自问自答。
环境:
- Android Studio 3.2.1 
- cmake3.6.4111459 
首先得到的是默认的CMakeLists.txt如下:
| 1 | cmake_minimum_required(VERSION 3.4.1) | 
如果我们将SHARED变为STATIC,事实上我们将不会得到任何的库文件(不仅仅.a,连.so文件都没有),个人认为出现这么不方便的问题应该是AndroiStudio或Gradle的问题。
解决问题的方法如下:
使用上面的代码我们已经可以得到.so文件了,然后我们加入以下代码获得.a文件,并使用和获得.so文件时使用的源文件一样:
| 1 | add_library( | 
native-lib-static可以换成任何你想要的名称,但是不可以是和动态链接库的名称一样。
然后再修改你的target_link_libraries如下
| 1 | target_link_libraries( | 
再构建项目:
Gradle->app->build->assembleDebug/assembleRelease
最后你就可以在app\.externalNativeBuild\cmake\debug(release)\<abi>\libnative-lib-static.a获得你想要的.a文件了。

期待谷歌能对这块改善一下吧,over