Expo React Native Release打包失败:expo-modules-core编译Kotlin报错
解决Expo React Native项目构建时expo-modules-core的Kotlin编译错误
核心问题分析
你遇到的AndroidExtensions.kt中TIRAMISU未解析、方法参数过多、类型不匹配等编译错误,本质是Kotlin版本过低导致的兼容性问题:
- Kotlin 1.5.21不支持Android 13(API 33)的
TIRAMISU版本常量引用 - 旧版Kotlin与Expo 52、React Native 0.76.5依赖的新Android API、模块代码不兼容
具体解决方案
1. 升级Kotlin版本到兼容版本
修改android/app/build.gradle中的kotlinVersion,启用注释的高版本:
ext { buildToolsVersion = findProperty('android.buildToolsVersion') ?: '35.0.0' minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '24') compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '35') targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34') kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.24' // 启用此版本,删除/注释1.5.21 ndkVersion = "26.1.10909125" }
同时确保项目根目录android/build.gradle中的Kotlin插件版本与上述一致:
buildscript { dependencies { classpath "com.android.tools.build:gradle:8.7.0" // Expo 52对应Gradle版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } }
2. 用expo-build-properties统一模块SDK配置
在app.json或app.config.js中添加expo-build-properties插件,强制所有Expo模块使用统一的Android SDK和Kotlin版本,避免模块间版本冲突:
"plugins": [ [ "expo-build-properties", { "android": { "compileSdkVersion": 35, "targetSdkVersion": 34, "minSdkVersion": 24, "kotlinVersion": "1.9.24" } } ] ]
3. 清理缓存并重新构建
旧缓存可能残留不兼容的编译文件,执行以下步骤彻底清理:
- 删除本地依赖与锁文件:
rm -rf node_modules rm package-lock.json - 清理Gradle缓存:
cd android && ./gradlew clean - 重新安装依赖并预构建(裸工作流):
npm install npx expo prebuild --clean
4. 避免手动安装expo-modules-core
Expo SDK会自动管理expo-modules-core的版本,手动安装可能导致版本不兼容。如果之前手动安装过,执行以下命令移除:
npm uninstall expo-modules-core
补充说明
若再次遇到AndroidManifest.xml冲突,可在AndroidManifest.xml的<application>标签中添加:
xmlns:tools="http://schemas.android.com/tools" tools:replace="android:appComponentFactory"
解决appComponentFactory属性冲突问题。
内容的提问来源于stack exchange,提问作者Tarık Can KARADENİZ
相关产品推荐
相关产品推荐

