之前接触过使用CMake编译IOS的项目,开始编译Android库时候,不是很熟悉Android.mk的编译方式,所以继续沿用CMake编译Android的库。使用gcc编译出来的库在Android stutio上使用时候App有些是可以直接用,但有些动态库会有一些奇奇怪怪的错误。所以换了最新版本的NDK,并采用clang编译,这下编译出来的库在Android stutio上使用是没有什么问题了。现将两种编译方式都总结如下,供大家参考。
一、android-ndk-r14b编译(gcc)
1. NDK环境配置
(1)下载android-ndk-r14b-linux-x86_64.zip
(2)linux下解压android-ndk-r14b-linux-x86_64.zip压缩包到 /usr/android 目录下(解压的目录不局限于这个)
#unzip android-ndk-r14b-linux-x86_64.zip
(3)配置NDK,编辑/etc/profile,添加NDK路径。
# vim /etc/profile
export ANDROID_NDK_HOME=/usr/android/android-ndk-r14b
export PATH=$ANDROID_NDK_HOME:$PATH
(4)输入命令 source /etc/profile,使配置生效。
#source /etc/profile
2. cmake工具链
(2) 修改工具链android.toolchain.cmake,将1325行改为:
set( ANDROID_LINKER_FLAGS "--sysroot=${ANDROID_SYSROOT}" )
注:如果不添加"--sysroot=${ANDROID_SYSROOT}",可能会有编译错误:缺少crtbegin_so.o、crtend_so.o等。
3. cmake脚本(CMakelists.txt)
#****************************T