穿胖次的夏雨来 2019-04-15 15:16 采纳率: 14.3%
浏览 373

VScode项目在react-native run-android时报错

VScode项目无法生成,报错如下
图片说明

问题解决方法:
找到where提示错误的地方
图片说明

感觉上面提示第95行代码,这里将

variant.mergeResourcesProvider.get().dependsOn(currentBundleTask)

改为variant.mergeResources.dependsOn(currentBundleTask)

修改之后,我这里再次提示第99行代码报错,这个时候,将

? variant.packageApplicationProvider.get()

改为? variant.packageApplication

再次修改之后,将会提示最后一次错误,根据提示错误的地方,

dependsOn(variant.mergeAssetsProvider.get())

改为dependsOn(variant.mergeAssets)

最后问题解决

  • 写回答

1条回答 默认 最新

  • 一只小爪磕 前端领域新星创作者 2024-05-23 18:56
    关注

    本答案由爪磕协同GPT-4o回答,希望对您有所帮助 解决问题望采纳!


    根据你提供的错误和解决方法,似乎是由于Gradle和React Native的Gradle脚本之间的不兼容导致的。你已经找到了问题所在,并进行了相应的修改。为了帮助其他遇到类似问题的开发者,这里详细说明一下解决步骤:

    错误描述

    在运行react-native run-android时,出现如下错误:

    FAILURE: Build failed with an exception.
    
    * Where:
    Script 'D:\ReactNativeProject\MyShopMall\node_modules\react-native\react.gradle' line: 95
    
    * What went wrong:
    A problem occurred configuring project ':app'.
    > Could not get unknown property 'mergeResourcesProvider' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.
    

    解决方法

    第一步:修改react.gradle文件

    找到node_modules/react-native/react.gradle文件,定位到第95行,将:

    variant.mergeResourcesProvider.get().dependsOn(currentBundleTask)
    

    修改为:

    variant.mergeResources.dependsOn(currentBundleTask)
    

    第二步:修改第99行代码

    在第99行,将:

    ? variant.packageApplicationProvider.get()
    

    修改为:

    ? variant.packageApplication
    

    第三步:修改最后的错误

    最后,根据提示,将:

    dependsOn(variant.mergeAssetsProvider.get())
    

    修改为:

    dependsOn(variant.mergeAssets)
    

    完整示例

    修改后的react.gradle文件应类似于以下内容:

    import groovy.transform.Field
    
    def configureReactBuildTasks(variant, currentBundleTask, targetName, bundleAssetName) {
        // 修改 mergeResourcesProvider
        variant.mergeResources.dependsOn(currentBundleTask)
    
        def packageTask = variant.hasProperty("packageApplication") ? variant.packageApplication : tasks.findByName("package${targetName}")
    
        if (packageTask != null) {
            packageTask.dependsOn(currentBundleTask)
        }
    
        // 修改 mergeAssetsProvider
        currentBundleTask.dependsOn(variant.mergeAssets)
    }
    

    其他建议

    1. 更新React Native和Gradle版本:确保你使用的是最新版本的React Native和Gradle插件,因为新版本可能已经修复了这些不兼容问题。
    2. 清理缓存和重建项目:执行./gradlew clean命令清理缓存,然后重新构建项目。
    3. 检查其他插件和依赖:有时候其他插件或依赖也可能导致类似的问题,确保所有插件和依赖都是最新版本。

    通过以上步骤,你应该能够解决在react-native run-android时遇到的Gradle配置问题。如果问题依然存在,建议查看官方文档或社区论坛寻求更多帮助。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵