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

React Native升级targetSDK至31时:react-native-pager-view编译任务失败求助

React Native 0.63.3升级targetSdkVersion至31后编译失败

环境与操作背景

  • React 版本:"react": "16.13.1"
  • React Native 版本:"react-native": "0.63.3"
  • 操作:因Google Play控制台要求将targetSdkVersion从30升级至31,已将项目的compileSdkVersion和targetSdkVersion均修改为31
  • 触发命令:yarn android
  • 核心错误:任务:react-native-pager-view:compileDebugJavaWithJavac执行失败

完整编译日志(中文翻译版)

yarn android
yarn run v1.22.10
$ react-native run-android
信息:正在运行jetifier以将库迁移到AndroidX。可使用"--no-jetifier"标志禁用此操作。
Jetifier发现6255个文件需要正向迁移,使用4个工作进程...
信息:JS服务器已在运行。
信息:正在安装应用...

> 配置项目 :tp-react-native-bluetooth-printer
警告:配置'compile'已过时,已被'implementation'和'api'取代。
该配置即将被移除。

Kotlin Gradle插件在多个子项目中被重复加载,这不受支持且可能导致构建失败。
这种情况可能发生在子项目使用Gradle 'plugins { ... }' DSL应用Kotlin插件且指定了明确版本时,即使版本相同也会出现。
请将Kotlin插件添加到公共父项目或根项目中,然后移除子项目中的版本指定。
如果父项目不需要该插件,请在插件行添加'apply false'。
Kotlin插件已在以下项目中加载:':react-native-pager-view', ':react-native-webview'

> 任务 :react-native-pager-view:compileDebugJavaWithJavac 执行失败

构建中使用了已废弃的Gradle特性,导致其与Gradle 7.0不兼容。
使用'--warning-mode all'查看单个弃用警告。
63个可执行任务:2个已执行,61个已是最新状态
[致命错误] gradle-3.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] builder-3.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] lint-gradle-api-26.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] gradle-api-3.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] crash-26.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] bundletool-0.9.0.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] jetifier-core-1.0.0-beta04.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
[致命错误] jetifier-processor-1.0.0-beta04.pom:7:3: 元素类型"hr"必须以匹配的结束标签终止

编译器(1.8.0_272)发生异常。请在检查Bug数据库是否存在重复问题后,通过Java错误报告页面提交错误报告。请在报告中包含你的程序和以下诊断信息。谢谢。
java.lang.AssertionError: annotationType(): 无法识别的属性名称MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
        at com.sun.tools.javac.util.Assert.error(Assert.java:133)

构建失败,出现异常。

* 错误原因:
任务':react-native-pager-view:compileDebugJavaWithJavac'执行失败。
> 编译失败;请查看编译器错误输出获取详细信息。

* 尝试方案:
使用--stacktrace选项获取堆栈跟踪。使用--info或--debug选项获取更多日志输出。使用--scan获取完整洞察。

* 获取更多帮助请查看官方文档

构建耗时1分7秒

错误:应用安装失败。请确保已正确设置Android开发环境。使用--verbose标志运行CLI获取更多详细信息。
错误:命令执行失败:gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
[致命错误] gradle-3.5.3.pom:7:3: 元素类型"hr"必须以匹配的结束标签"</hr>"终止。
错误:命令以退出码1失败。
信息:查看yarn官方文档了解run命令的相关说明。

解决步骤

  1. 修复Maven缓存损坏问题
    本地Maven缓存中的pom文件格式错误(hr标签未闭合),需清理相关缓存:

    • 找到本地Maven缓存目录(默认路径为~/.m2/repository)
    • 删除以下目录:
      • com/android/tools/build/gradle/3.5.3
      • com/android/tools/build/builder/3.5.3
      • com/android/tools/lint/lint-gradle-api/26.5.3
      • com/android/tools/build/gradle-api/3.5.3
      • com/android/tools/build/crash/26.5.3
      • com/android/tools/build/bundletool/0.9.0
      • com/android/tools/jetifier/jetifier-core/1.0.0-beta04
      • com/android/tools/jetifier/jetifier-processor/1.0.0-beta04
    • 重新执行yarn android,让Gradle重新下载正确的依赖文件
  2. 解决Kotlin插件重复加载问题

    • 在项目根目录的build.gradle文件中,统一声明Kotlin插件版本并设置apply false:
      plugins {
          // 保留原有插件,添加以下内容
          id 'org.jetbrains.kotlin.android' version '1.5.31' apply false
      }
      
    • 找到node_modules/react-native-pager-view/android/build.gradle和node_modules/react-native-webview/android/build.gradle,修改插件引用,移除版本号:
      // 原代码可能是 id 'org.jetbrains.kotlin.android' version 'x.x.x'
      // 修改为
      id 'org.jetbrains.kotlin.android'
      
  3. 处理Java编译兼容性错误

    • 升级Java版本到11:React Native 0.63.x搭配targetSdkVersion 31时,Java 8易出现兼容性问题,切换到Java 11可解决MODULE属性未识别的错误。
    • 升级react-native-pager-view版本:旧版本库可能不兼容targetSdkVersion 31,在package.json中更新依赖到兼容0.63.x的最新版本(如^3.0.0),执行yarn install后重新构建。
  4. 清理构建缓存

    • 执行以下命令彻底清理缓存:
      ./gradlew clean
      rm -rf node_modules yarn.lock
      yarn install
      yarn android
      

内容的提问来源于stack exchange,提问作者Baem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:20:28