You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内构建Expo Android应用时出现arm64-v8a无兼容库错误

Docker容器内构建Expo Android应用时出现arm64-v8a无兼容库错误

我之前在Docker环境里构建Expo Android应用时也碰到过类似的CMake库找不到的问题,结合你的配置来看,大概率是Android SDK的NDK或CMake组件没装全,或者环境变量没配置对。你可以从以下几个方向逐步排查:

1. 确保安装了对应版本的NDK和CMake

React Native 0.74.x(你的项目用的这个版本)对NDK版本有明确要求,需要安装NDK 25.2.9519653以及兼容的CMake版本(比如3.22.1)。你当前的Dockerfile里只安装了Android命令行工具,但没包含NDK和CMake组件,这会导致原生模块编译时找不到arm64-v8a的库。

修改Dockerfile里的sdkmanager命令,添加NDK和CMake的安装:

yes | /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses \
&& yes | /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --install "ndk;25.2.9519653" "cmake;3.22.1" "build-tools;34.0.0"

(顺便加上对应版本的build-tools,避免后续其他编译问题)

2. 配置NDK相关环境变量

安装完NDK后,需要在Dockerfile里设置ANDROID_NDK_HOME环境变量,让CMake能找到NDK的路径:

ENV ANDROID_NDK_HOME=/opt/android-sdk/ndk/25.2.9519653
ENV PATH=$PATH:$ANDROID_NDK_HOME:$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin

3. 检查Docker容器的架构兼容性

如果你的Docker主机是x86_64架构,但要构建arm64-v8a的包,需要确保NDK支持交叉编译(通常NDK默认支持),或者在运行容器时开启QEMU架构模拟(比如添加--platform linux/arm64参数启动容器)。不过EAS本地构建一般会自动处理交叉编译,先优先排查前面的NDK安装问题。

4. 暂时调整JAVA_TOOL_OPTIONS试试

你提到有人说_JAVA_OPTIONS可能影响,虽然你用的是JAVA_TOOL_OPTIONS,可以尝试在构建命令前临时取消这个设置,看是否能解决:

unset JAVA_TOOL_OPTIONS && eas build --profile development --platform android --local

如果取消后正常,再调整参数或者确认是否是IPv4设置导致的网络问题(比如构建时无法下载依赖库)。

5. 清理构建缓存

有时候缓存的旧构建文件会导致冲突,你可以在构建前清理本地缓存:

rm -rf node_modules .gradle .android eas-build-local-cache
npm install

或者直接用EAS的清理选项:

eas build --profile development --platform android --local --clean

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:09:31