React Native打包Release包时遇react-native-screens Kotlin编译错误求助
问题描述
执行gradlew clean assembleRelease打包React Native应用的.aab文件时,出现以下编译错误:
> Task :react-native-screens:compileReleaseKotlin FAILED e: org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression in (15,47) in C:/xampp/htdocs/WOO!/node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt Attachments: causeThrowable java.io.FileNotFoundException: C:\xampp\htdocs\WOO!\node_modules\react-native-screens\android\build\intermediates\compile_r_class_jar\release\R.jar!/node_modules/react-native-screens/android/build/intermediates/compile_r_class_jar/release/R.jar!/com/swmansion/rnscreens/R.class
以及构建失败提示:
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-screens:compileReleaseKotlin'. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
该问题疑似在修改应用包名后出现,已尝试将build.gradle中的Kotlin版本升级到1.8.0,但未解决问题。当前项目依赖版本:
"react-native": "0.68.5", "react-native-screens": "^3.19.0"
由于react-native-navigation依赖react-native-screens,无法卸载该库,需解决此编译问题。
解决方案
彻底清理缓存与依赖
执行以下命令清除所有可能残留的旧包名相关文件和缓存:# 清理React Native缓存 npx react-native clean # 删除依赖目录与锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 清理Android构建缓存 cd android && ./gradlew cleanBuildCache clean核对包名修改的全量配置
确认修改包名时以下关键文件均已同步更新:android/app/src/main/AndroidManifest.xml中的package属性android/app/build.gradle中的applicationId字段android/app/src/main/java/下的原包名目录已重命名为新包名结构- 第三方配置文件(如
react-native-config的.env)中的包名相关参数
适配RN 0.68的Kotlin版本
RN 0.68.5稳定适配的Kotlin版本为1.6.x,升级到1.8.0可能引发兼容性问题,尝试降级:
在项目根目录的android/build.gradle中修改Kotlin版本:buildscript { ext { kotlinVersion = "1.6.21" } // 其余配置保持不变 }修复R文件生成异常
错误显示R文件路径重复,手动触发模块的R文件生成:- 进入
android目录,执行:./gradlew :react-native-screens:compileReleaseSources - 若仍报错,删除
node_modules/react-native-screens/android/build目录后重新执行构建命令
- 进入
升级react-native-screens到兼容版本
当前3.19.0版本可能与RN 0.68.5存在适配问题,尝试升级到同大版本的最新兼容版(如3.25.0,已验证兼容RN 0.68):npm install react-native-screens@3.25.0 --save
内容的提问来源于stack exchange,提问作者gabogabans
相关产品推荐
相关产品推荐

