首次使用Expo运行Android模拟器遇react-native-reanimated编译失败求助
解决Expo运行Android模拟器时react-native-reanimated的构建失败问题
错误原因
你遇到的构建失败是由于JDK 21与react-native-reanimated 3.6.2、Gradle 8.3存在兼容性冲突,具体表现为JDK21的jlink工具无法正确处理Android系统模块jar包,导致react-native-reanimated:compileDebugJavaWithJavac任务执行失败。
解决方案
1. 降级JDK到17版本
Android官方推荐使用JDK 17进行构建,JDK21尚未被广泛适配:
- 卸载当前安装的JDK 21
- 安装JDK 17(可选择Oracle JDK或OpenJDK)
- 配置终端环境变量,确保使用JDK17:
- 执行
java -version确认当前版本 - Mac用户修改
~/.zshrc或~/.bash_profile,添加:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH - 执行
source ~/.zshrc(对应你的终端配置文件)使配置生效
- 执行
2. 清理缓存与构建文件
移除旧的构建缓存,避免残留问题:
- 删除项目内的Android构建目录:
rm -rf android/build android/app/build - 删除全局Gradle缓存:
rm -rf ~/.gradle/caches - 重新执行构建命令:
npx expo run:android
3. 验证react-native-reanimated配置
确保Babel插件配置正确,这是reanimated正常工作的必要条件:
- 打开项目根目录的
babel.config.js,确认reanimated插件放在最后:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: ['react-native-reanimated/plugin'], }; };
4. 检查Android SDK配置
确保SDK版本与项目配置匹配:
- 打开Android Studio的SDK Manager,确认已安装
android-34版本的SDK Platform和对应Build Tools - 检查项目
android/build.gradle中的targetSdkVersion是否为34
内容的提问来源于stack exchange,提问作者Adam Sucharda
相关产品推荐
相关产品推荐

