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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:09:51