ltlovezh
CMake与NDK搭配使用时,可以配置的部分变量: 1. `ANDROID_PLATFORM`:指定Android的目标版本,对应`$NDK/platforms/`目录下的版本。通常情况下是`defaultConfig`中的`minSdkVersion`,这样就能确保所有大于等于`minSdkVersion`的设备都可以使用编译生成的库。 但是也有例外,比如:当`ANDROID_ABI=arm64-v8a`时,即使`minSdkVersion`为`18`,但是`ANDROID_PLATFORM=android-21`,因为从API21开始才支持64位库。这里的版本直接决定了使用`$NDK/platforms`目录下哪个系统版本的库和头文件。 2. `ANDROID_STL`:指定使用的STL库,STL库不是Android系统自带的,若使用静态库(`c++_static`),则会链接进目标库;若使用动态库(c++_shared),Gradle会将动态库(libc++_shared.so)和目标库一起打包。详情可参考[C++ 库支持](https://developer.android.com/ndk/guides/cpp-support.html?hl=zh-cn)。 3. `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`目录下。

分类:

技术点:

相关文章: