生成apk时React Native Android Duplicate file错误

新手上路,请多包涵

当我尝试使用 ./gradlew installRelease 生成 android apk 时,我在控制台中收到此错误:

 ~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi-v4/src_resources_img_loading.gif: error: Duplicate file.
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi/src_resources_img_loading.gif: Original is here. The version qualifier may be implied.

我通过 Android Studio 尝试了 Build->Clean Project 并再次运行了 ./gradlew installRelease ;它也没有用。

另外,我尝试删除 build 文件夹,但它也无济于事。

原文由 Shongsu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 463
1 个回答

给你一些建议,希望它的工作。

用“react”更新:“16.7.0”,“react-native”:“0.57.8”

自定义 node_modules/react-native/react.gradle 完美解决 _Duplicate file 错误_。将以下代码添加到 currentBundleTask 的创建块中( 在 doFirst 块之后

 doLast {
    def moveFunc = { resSuffix ->
        File originalDir = file("${resourcesDir}/drawable-${resSuffix}");
        if (originalDir.exists()) {
            File destDir = file("$buildDir/../src/main/res/drawable-${resSuffix}");
            ant.move(file: originalDir, tofile: destDir);
        }
    }
    moveFunc.curry("ldpi").call()
    moveFunc.curry("mdpi").call()
    moveFunc.curry("hdpi").call()
    moveFunc.curry("xhdpi").call()
    moveFunc.curry("xxhdpi").call()
    moveFunc.curry("xxxhdpi").call()
}


您可以创建脚本来自动执行此操作。

  1. 创建 android-react-gradle-fix 文件

  2. 创建脚本 android-release-gradle-fix.js 文件

  3. 更新 package.json 文件:

    “脚本”:{ “安装后”:“节点 ./android-release-gradle-fix.js” },

而已!运行 npm install 变得很棒。

注意: 如果你在 jenkins 之类的 ci 上运行 npm install ,你可能会得到错误: postinstall: cannot run in wd %s %s (wd=%s) node => 只需使用 npm install --unsafe-perm

原文由 Nhan Cao 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题