繁体   English   中英

删除未使用的资源需要打开未使用的代码收缩

[英]Removing unused resources requires unused code shrinking to be turned on

我正准备发布一个应用程序来生产。 所以,我生成了签名的apk。 生成签名的apk后,我遇到了问题。 我的 apk 文件有点大,我尝试了缩小 apk 大小的方法。 我已经试过了

app --> 重构 --> 删除未使用的资源

并且不会太减少。 所以,我在 build.gradle(app) 中添加了shrinkResources true

 buildTypes {
        release {
            minifyEnabled false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

添加shrinkResources true后,我在重建时遇到了以下错误。 我的问题是我应该如何首先打开未使用的代码收缩? 感谢和赞赏。

在此处输入图像描述

资源收缩仅与代码收缩结合使用。 代码收缩器删除所有未使用的代码后,资源收缩器可以识别应用程序仍在使用哪些资源。 当您添加包含资源的代码库时尤其如此——您必须删除未使用的库代码,以便库资源不被引用,从而被资源压缩器移除

要启用资源收缩,请将 build.gradle 文件中的 shrinkResources 属性设置为 true(与 minifyEnabled 一起用于代码收缩)。 例如:

android {
...
buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}

}

参考

也许你在minifyEnabled = false错误地设置了minifyEnabled = falseshrinkResources = true ,所以,也许,这是问题的根源,而不是你的 buildTypes.release

您可能需要参考 Android 文档来缩小您的代码和资源:

缩小您的代码和资源

就像已经指出的评论一样,资源收缩仅在您使用代码收缩器时才有效。 要在build.gradle文件中启用shrinkResources ,您必须首先将minifyEnabled设置为true

很简单,只需打开 App 级别的 build.gradle 文件,即 android/app/build.gradle 并实现:

 release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug
        useProguard true
        minifyEnabled false
        shrinkResources false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

    }
android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
        }
    }
}

确保将其添加到 gradle 的适当部分

   signingConfigs {
    buildTypes {
        debug {
            buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)"
        }
        release {
            buildConfigField "java.util.Date", "buildTime", "new java.util.Date(" + System.currentTimeMillis() + "L)"
        }
    }
}


buildTypes {
    release {
        minifyEnabled false
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

为了使用资源收缩,您还需要启用代码收缩,因为它们两者协同工作。
为此,请设置shrinkResources trueminifyEnabled true
您可以按照相同的官方网站

如果您添加了shrinkResources true确保它出现在minifyEnabled true之后,那么订单很重要,所以https://stackoverflow.com/a/56426634/10355668是正确的,谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM