Mac执行gradlew build报错缺失android-ndk-r16b clang++文件问题
问题产生原因
Android NDK r16b的LLVM工具链中,clang++并非独立编译的可执行文件,而是指向同目录下clang二进制的软链接。该报错的核心诱因是软链接丢失,常见触发场景有两种:
- 解压NDK压缩包时使用了不支持保留Unix软链接属性的工具,包括Mac旧版自带归档实用工具、部分第三方图形化解压软件,解压过程会直接跳过软链接文件,最终目录里只剩
clang等实体文件,缺失clang++入口 - 从Windows等非Unix系统直接拷贝已解压的NDK目录到Mac设备,跨文件系统的软链接格式不兼容,导致链接文件损坏丢失
解决方法
按操作成本从低到高排列,按需选择即可:
- 手动补建缺失软链接
打开终端,进入报错提示的NDK工具bin目录:
执行命令创建软链接:cd 你的本地存储路径/android-ndk-r16b/toolchains/llvm/prebuilt/darwin-x86_64/bin
创建完成后执行ln -s clang clang++./clang++ --version验证,能正常输出版本信息即修复成功。之后回到项目根目录,先执行./gradlew clean清空旧构建缓存,再重新执行build命令即可。如果构建过程中提示缺失带版本后缀的clang++文件(比如clang++5.0),用同样方式创建指向clang的软链接即可。 - 用命令行工具重新解压NDK安装包
不要使用图形化解压软件,打开终端进入NDK压缩包所在目录,执行系统自带的unzip命令解压:
命令行unzip默认会完整保留压缩包内的软链接结构,解压完成后替换原有损坏的NDK目录即可正常构建。unzip android-ndk-r16b-darwin-x86_64.zip - 升级NDK版本(适合无强版本绑定的项目)
NDK r16b是2017年发布的老旧版本,后续r17及以上正式版本已经修复了Mac平台下软链接兼容、解压丢失的相关问题,和新版Gradle、Android构建插件的适配性也更好。如果项目原生代码没有强依赖r16b的特定编译逻辑,升级到更新的NDK长期支持版本可以从根源规避这类老旧版本的兼容问题。
内容的提问来源于stack exchange,提问作者Edward Falk
相关产品推荐
相关产品推荐

