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

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 phython创建了文件 显示在项目下面,但运行不了,运行时还是运行main文件,并且说main文件不允许并行运行
  • ¥20 C++哈希表的设计构造哈希表
  • ¥15 FutureWarning:不推荐使用空或全 NA 条目的 DataFrame 串联行为。怎么改呢?
  • ¥15 Chatgpt突然无法正常显示数学公式,如何解决?
  • ¥15 一个用华为模拟器做的实验。
  • ¥28 opencv Cuda C++编译
  • ¥15 插入sim卡4g模组反复断连
  • ¥100 如何把 16bit Bayer 图像数据转换为 TIFF RGB
  • ¥15 进行基于用户的协同过滤推荐,使用准确率和召回率评价推荐模型的效果
  • ¥15 word脚注设置不起空格符号