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

1aaf6o9v  于 2023-03-27  发布在  Android
关注(0)|答案(9)|浏览(137)

我准备发布一个应用程序到生产.所以,我生成了签名的apk.生成签名的apk后,我得到了一个问题.我的apk文件大小有点大,我尝试了缩小apk大小的方法.我已经尝试过了
app --〉Refactor --〉移除未使用的资源
而且它也不是太精简。所以,我在我的build.gradle(app)中添加了shrinkResources true

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

添加了shrinkResources true后,我在重建的时候出现了下面的错误。我的问题是,我应该如何先打开未使用的代码收缩?谢谢和欣赏。

9lowa7mx

9lowa7mx1#

资源收缩只能与代码收缩一起使用。在代码收缩器移除所有未使用的代码后,资源收缩器可以识别应用仍在使用的资源。在添加包含资源的代码库时尤其如此-您必须移除未使用的库代码,以便库资源变为未引用,从而可由资源收缩器移除
要启用资源收缩,请在build.gradle文件中将shrinkResources属性设置为true(与minifyEnabled一起用于代码收缩)。例如:

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

参考

hpcdzsge

hpcdzsge2#

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

tf7tbtn2

tf7tbtn23#

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

gpfsuwkq4#

您可能需要参考Android文档来缩减代码和资源:
Shrink your code and resources
就像已经指出的注解一样,资源收缩只有在使用代码收缩器时才起作用。

ve7v8dk2

ve7v8dk25#

简单只需在应用程序级别打开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' 

    }
kyks70gy

kyks70gy6#

为了使用资源收缩,您还需要启用代码收缩,因为它们都是协同工作的。
为此,请设置shrinkResources true沿着minifyEnabled true
你可以在官方网站上找到同样的东西。

xxe27gdn

xxe27gdn7#

确保将其添加到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'
    }
}
vfwfrxfs

vfwfrxfs8#

如果您添加了shrinkResources true,请确保它在minifyEnabled true之后,顺序很重要,因此https://stackoverflow.com/a/56426634/10355668是正确的,谢谢

j2datikz

j2datikz9#

在debug和release中都将minifyEnabled设置为true

相关问题