删除未使用的资源需要打开未使用的代码收缩
Removing unused resources requires unused code shrinking to be turned on
我正准备将应用程序发布到生产环境。所以,我生成了签名的 apk。生成签名的 apk 后,我遇到了问题。我的 apk 文件有点大,我尝试了一些方法来缩小 apk 的大小。我已经试过了
app --> Refactor --> Remove Unused Resources
并没有减少太多。所以,我在 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'
}
}
}
您可能需要参考 Android 文档来缩减您的代码和资源:
Shrink your code and resources
就像已经指出的评论一样,资源压缩只有在您使用代码压缩器时才有效。要在 build.gradle
文件中启用 shrinkResources
,您必须先将 minifyEnabled
设置为 true
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
}
}
简单,只需在应用级别打开 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'
}
为了使用资源缩减,您还需要启用代码缩减,因为它们可以结合使用。
为此,设置 shrinkResources true 和 minifyEnabled true.
您可以按照 official site 进行相同的操作。
可能是你在buildTypes.debug中设置错了minifyEnabled = false
和shrinkResources = true
,所以,可能是问题的根源,而不是你的buildTypes.release
确保将其添加到 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'
}
}
我正准备将应用程序发布到生产环境。所以,我生成了签名的 apk。生成签名的 apk 后,我遇到了问题。我的 apk 文件有点大,我尝试了一些方法来缩小 apk 的大小。我已经试过了
app --> Refactor --> Remove Unused Resources
并没有减少太多。所以,我在 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'
}
}
}
您可能需要参考 Android 文档来缩减您的代码和资源:
Shrink your code and resources
就像已经指出的评论一样,资源压缩只有在您使用代码压缩器时才有效。要在 build.gradle
文件中启用 shrinkResources
,您必须先将 minifyEnabled
设置为 true
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
}
}
简单,只需在应用级别打开 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'
}
为了使用资源缩减,您还需要启用代码缩减,因为它们可以结合使用。
为此,设置 shrinkResources true 和 minifyEnabled true.
您可以按照 official site 进行相同的操作。
可能是你在buildTypes.debug中设置错了minifyEnabled = false
和shrinkResources = true
,所以,可能是问题的根源,而不是你的buildTypes.release
确保将其添加到 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'
}
}