Expo React Native Android构建失败:values.xml颜色资源报错
解决思路
一、处理Gradle缓存报错(Unsupported class file major version 65)
- 检查并切换Java版本:这个错误是因为Java字节码版本65对应Java 21,而当前Gradle版本不支持。执行
java -version确认当前版本,降级到Java 17(Expo官方推荐版本)。可以通过设置JAVA_HOME环境变量指向Java 17的安装路径,或者用SDKMAN、jabba这类工具快速切换版本。 - 清理Gradle缓存:进入项目的
android目录,执行./gradlew clean,同时删除本地Gradle缓存目录~/.gradle/caches,避免旧缓存残留导致的版本冲突。 - 锁定兼容的Gradle版本:打开
android/gradle/wrapper/gradle-wrapper.properties,将distributionUrl指定为兼容Java 17的版本,比如https\://services.gradle.org/distributions/gradle-7.6.4-all.zip(Gradle 7.5+支持Java 17)。
二、处理自动生成的values.xml无效颜色问题
- 排查第三方依赖:这些未引用的颜色大概率来自某个第三方依赖库的资源合并。进入
android目录执行./gradlew dependencies生成依赖树,逐一排查近期更新或新增的依赖,尝试升级该依赖到最新稳定版,或者替换为功能类似的其他库。 - 手动覆盖颜色资源:在项目的
android/app/src/main/res/values/colors.xml中添加这些颜色的明确定义,比如:
注意对应自动生成的颜色名称,通过覆盖来解决资源合并时的格式或冲突问题。<color name="auto_generated_color_1">#ffd6d7d7</color> <color name="auto_generated_color_2">#24000000</color> - 排除依赖的资源文件:如果确定是某依赖导致的问题,在
android/app/build.gradle的dependencies块中,对该依赖添加资源排除规则,例如:
但需注意这可能影响依赖的正常功能,需测试验证。implementation('com.example:problematic-lib:1.0.0') { exclude group: 'com.example', module: 'lib-resources' }
三、额外排查步骤
- 执行
expo doctor检查项目依赖配置,修复所有提示的不兼容问题。 - 核对
eas.json中previewprofile的配置,确保没有指定错误的构建参数或环境变量。
内容的提问来源于stack exchange,提问作者Arne Jenssen
相关产品推荐
相关产品推荐

