我正准备将App发布到生产环境。因此,我生成了签名的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 后,重建时出现以下错误。我的问题是如何首先打开未使用的代码收缩功能?谢谢,谢谢。
答案 0 :(得分:7)
资源缩减仅与代码缩减结合使用。代码缩减器删除所有未使用的代码后,资源缩减器可以识别应用程序仍使用哪些资源。添加包含资源的代码库时尤其如此-必须删除未使用的库代码,以使库资源成为未引用的资源,因此可以由资源收缩器移除。
要启用资源缩减,请将build.gradle文件中的rinkleResources属性设置为true(与minifyEnabled一起进行代码缩减)。例如:
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
答案 1 :(得分:2)
您可能想参考Android文档来缩减代码和资源:
Shrink your code and resources
就像已经指出的评论一样,资源缩减仅在使用代码缩减器后才有效。要在shrinkResources
文件中启用build.gradle
,必须先将minifyEnabled
设置为true
答案 2 :(得分:1)
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
}
}
答案 3 :(得分:1)
简单的只需在应用程序级别即android / app / build.gradle上打开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'
}
答案 4 :(得分:1)
也许您在buildTypes.debug中错误地设置了minifyEnabled = false
和shrinkResources = true
,所以也许这是问题的根源,而不是buildTypes.release
答案 5 :(得分:0)
为了使用资源缩减功能,您还需要启用代码缩减功能,因为它们都可以协同工作。
为此,请将 shrinkResources true 和 minifyEnabled true 一起设置。
您可以按照official site进行相同操作。
答案 6 :(得分:0)
确保将其添加到 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'
}
}