分享

NDK Cmake

 新进小设计 2020-09-25

CMake与NDK搭配使用时,可以配置的部分变量:

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多