CMake与NDK搭配使用时,能够配置的部分变量:html
ANDROID_PLATFORM
:指定Android的目标版本,对应$NDK/platforms/
目录下的版本。一般状况下是defaultConfig
中的minSdkVersion
,这样就能确保全部大于等于minSdkVersion
的设备均可以使用编译生成的库。 可是也有例外,好比:当ANDROID_ABI=arm64-v8a
时,即便minSdkVersion
为18
,可是ANDROID_PLATFORM=android-21
,由于从API21开始才支持64位库。这里的版本直接决定了使用$NDK/platforms
目录下哪一个系统版本的库和头文件。 ANDROID_STL
:指定使用的STL库,STL库不是Android系统自带的,若使用静态库(c++_static
),则会连接进目标库;若使用动态库(c++shared),Gradle会将动态库(libc++shared.so)和目标库一块儿打包。详情可参考C++ 库支持。 ANDROID_ARM_NEON
:指定CMake是否构建支持NEON
的目标库。API大于等于23时,默认值为true,不然为false。 Cmake编译时,是经过$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin
下的交叉编译工具进行编译和连接,arm-linux-androideabi-4.9
表示对应abi架构和位数,例如:arm64就是aarch64-linux-android-4.9
。而连接时所依赖的系统库,则是在$NDK/platforms/${ANDROID_PLATFORM}/${abi}/usr/lib
目录下。linux