如何确定项目使用的ndk版本?

查看项目中是否有显示配置,可使用ndk关键字在项目中全局搜索,包括gradle和local.properties,如果没有则按照如下步骤。

对debug编译出的so使用readelf -p “.comment”工具,查看其输出

String dump of section '.comment':
  [     0]  Android (8490178, based on r450784d) clang version 14.0.6 (<https://android.googlesource.com/toolchain/llvm-project> 4c603efb0cca074e9238af8b4106c30add4418f6)
  [    9d]  Linker: LLD 14.0.6

这里有一个based on r450784d,结合ai以及查文档,可以看到这个ndk是r25c

https://github.com/android/ndk/wiki/Changelog-r25

ndk版本对安卓系统版本没有明确的要求,ndk版本的change log中会给出该ndk默认支持的版本,比如r25c支持的最低系统API是19

这里插一嘴,说一说我发现的有趣的事情,

首先,AGP版本和Gradle版本是有依赖关系的,想要使用更高版本的AGP,必须要Gradle版本能够对应上,其次,高版本的compileSdk可能对应高版本的AGP,这也是有的时候我们升级项目的compileSdk版本,必须修改AGP版本的原因。

同时,有的时候你会发现我们并没有在项目中指定ndk的版本,但是对应的native代码能够正常编译,这是因为每一个版本的AGP都有自己默认的ndk版本,比如AGP 8.1,它使用的ndk版本是25.1.8937393,参考https://developer.android.google.cn/build/releases/past-releases/agp-8-1-0-release-notes?hl=zh-cn

如果项目中使用了ndk,那么最好是我们显式地指定ndk的版本,而不是依赖AGP提供的默认版本,ndk版本通常来说和安卓sdk版本没有强依赖关系,但是每一个ndk都有最低支持版本,需要注意这一点。不要配置错。一般来说,ndk版本遵循够用就行的原则。不必一味追求最新的版本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容