• react native中一次错误排查 Error:Error: Duplicate resources


    最近一直在使用react native中,遇到了很多的坑,同时也学习到了一些移动端的开发经验。

    今天在做一个打包的测试时,遇到了一个问题,打包过程中报错“Error:Error: Duplicate resources”,什么意思呢,就是打包资源有重复,后来查看了一下,发现打包到android/app/src目录下的静态文件重名了。

    重现步骤:

    1:通过vscode打开项目,运行打包命令

    react-native ram-bundle --entry-file index.js --platform android --dev false --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/
    

    2:

    cd android && ./gradlew assembleRelease
    

    查看android/app/src/mian/res/drawable目录下静态资源图片文件名重复

    解决方案

    1:打开node_modules/react-native/react.gradle文件,在doFirst块下添加doLast块

    doLast {
        def moveFunc = { resSuffix ->
            File originalDir = file("$buildDir/generated/res/react/release/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()
    }
    

    2:打开node_modules/react-native/local-cli/bundle/assetPathUtils.js文件,修改getAndroidAssetSuffix函数方法如下

    function getAndroidAssetSuffix(scale: number): string {
      switch (scale) {
        case 0.75: return 'ldpi-v4';
        case 1: return 'mdpi-v4';
        case 1.5: return 'hdpi-v4';
        case 2: return 'xhdpi-v4';
        case 3: return 'xxhdpi-v4';
        case 4: return 'xxxhdpi-v4';
      }
      throw new Error('no such scale');
    }
    

    3:删除android/app/src/main/res/drawable-**目录下面打包进去的静态资源文件(文件名会比较长)

    4:如果采用android studio进行打包,点击build下clean project,清除打包缓存

    5:重新执行打包命令即可打包成功。

    参考资料:

    1:https://github.com/facebook/react-native/issues/22234

    2:https://blog.csdn.net/wyw223/article/details/84311733

  • 相关阅读:
    1092 最好吃的月饼 (20 分)
    pat 乙级 1093 字符串A+B (20 分)
    pat乙级 1091 N-自守数 (15 分)
    查询GC日志、动态年龄计算
    四大特性以及事务的隔离级别
    R语言学习
    利用python进行数据分析3_Pandas的数据结构
    python_109_切片补充和list函数
    爬虫_python3_requests
    利用python进行数据分析1_numpy的基本操作,建模基础
  • 原文地址:https://www.cnblogs.com/sk-3/p/10720933.html
Copyright © 2020-2023  润新知