接上篇的 16kb 适配问题,我们有个公司开发的底层库也需要做适配
这个需求提到底层去,底层开发添加了哈配置做了适配,也用libchecker检查了哈库是显示了 16kb 的标志的然后推了代码,我这边自己编译了一份 so 集成到我们的库里面去,编译出来用 objdump 命令一看还是 2**12 的,还以为底层开发没处理 ok😅,跑底层开发处确认,他那边打出来确实是 2**14 的,😳
确认了哈差异性,他是 windows 的,我这边 mac 的,理论上系统应该不影响,然后研究了哈,感觉应该是 ndk 版本问题
果断对了哈两边的 ndk 版本,两边确实有差异,最后用最新的 ndk 版本29.0.13599879编译,对打出的 so 用命令验证哈果然 ok 了,所以建议项目中配置明确的 ndk 版本,避免这种差异的发生
明确 ndk 版本
因为不配置明确的ndk版本,Android 会用使用的Gradle 插件(AGP)会选择一个已知兼容的默认版本,不同版本的 AGP 默认使用的 NDK 版本在 AGP 发布说明中有详细记录
比如我这个AGP 7.1.x 默认推荐的 NDK 版本为 21.4.7075529,具体可以 ai 搜索确认哈
建议 ndk 尽量按最新的版本来适配,这样逐渐适配避免谷歌一刀切强制限制的时候直接去适配最新版本时一脸懵逼,到处报错
下载最新 ndk