在Apple Silicon M1上编译Alexa Auto SDK 3.2出现zlib-native错误如何解决
报错根因
你遇到的错误是Apple Silicon(aarch64架构)设备编译旧版Alexa Auto SDK 3.2的典型兼容性问题:
AAC 3.2的编译脚本默认针对x86_64架构的宿主设备编写,zlib-native编译配方硬编码了x86_64架构的系统zlib库路径/usr/lib/x86_64-linux-gnu/,但M1设备上Docker默认运行的是aarch64架构的Ubuntu容器,该路径不存在,因此触发复制文件失败的报错。
解决方案
方案1:强制Docker使用x86_64架构模拟运行(推荐,兼容性最好)
这个方案不需要修改任何编译代码,靠Docker的Rosetta 2模拟解决架构兼容问题:
- 打开Docker Desktop设置,进入「Features in Development」选项页,勾选Use Rosetta for x86/64 emulation on Apple Silicon,保存后重启Docker
- 执行编译命令前先设置架构环境变量:
export DOCKER_DEFAULT_PLATFORM=linux/amd64
- 再执行原本的编译命令即可:
./builder/build.sh android -t androidx86-64 --android-api 28
注意:模拟运行会比原生aarch64编译慢30%~50%,但不会出现其他架构兼容问题
方案2:修改编译配方适配aarch64架构(编译速度快,可能需要后续修改其他依赖)
如果希望用原生aarch64架构编译,可以直接修改报错的zlib配方:
- 找到文件
builder/meta-aac-ubuntu/recipes-native/zlib/zlib-native.bb - 把文件内硬编码的
/usr/lib/x86_64-linux-gnu/libz.*路径替换为/usr/lib/aarch64-linux-gnu/libz.* - 清理之前的编译缓存:
rm -rf build/tmp-android-28
- 重新执行编译命令即可
注意:如果后续遇到其他依赖也有硬编码x86路径的报错,按照同样的逻辑修改对应路径即可
内容的提问来源于stack exchange,提问作者hannes ach
相关产品推荐
相关产品推荐

