如何为React Native 0.65裸项目安装Expo Modules?遇Java版本冲突
解决React Native 0.65裸项目安装Expo Modules的Java版本冲突问题
核心思路
Expo Modules部分组件默认要求Java 11,但React Native 0.65强制依赖Java 8,无需全局升级Java,只需针对当前项目的Expo相关配置单独指定Java版本即可。
具体解决步骤
1. 配置项目局部Java版本
在项目根目录下的android/gradle.properties文件中添加以下配置,强制Expo相关任务使用Java 8:
org.gradle.java.home=/path/to/your/java8/jdk expo.android.javaVersion=1.8
替换/path/to/your/java8/jdk为本地Java 8 JDK的实际路径:
- Windows示例:
C:\\Program Files\\Java\\jdk1.8.0_301 - Mac/Linux示例:
/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
2. 调整Gradle构建配置
打开android/build.gradle文件,修改以下部分:
buildscript { ext { buildToolsVersion = "30.0.2" minSdkVersion = 21 compileSdkVersion = 30 targetSdkVersion = 30 javaVersion = JavaVersion.VERSION_1_8 // 新增Java版本声明 } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:4.2.2") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10") classpath("expo:expo-gradle-plugin:~0.10.0") // 选用适配RN0.65的插件版本 } } // 全局统一Java编译版本 allprojects { repositories { mavenCentral() google() maven { url 'https://jitpack.io' } } tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } }
注意:expo-gradle-plugin务必选择0.10.x系列,过高版本会强制要求Java 11。
3. 清理缓存并重新构建
执行以下命令清除旧缓存,避免配置冲突:
cd android ./gradlew clean cd .. npx react-native run-android
4. 验证配置有效性
打开Android Studio,进入File > Project Structure > SDK Location,确认JDK路径指向Java 8;再进入Module Settings,检查所有模块的Source Compatibility和Target Compatibility均设置为1.8。
额外技巧
如果使用Expo CLI命令安装依赖,可临时通过环境变量指定Java 8:
# Mac/Linux export JAVA_HOME=/path/to/java8/jdk && npx expo install # Windows set JAVA_HOME=C:\path\to\java8\jdk && npx expo install
内容的提问来源于stack exchange,提问作者a2nineu
相关产品推荐
相关产品推荐

