我是原生Android开发人员,我开始使用flutter SDK。我按照官方的flutter doc开发了一个简单的应用程序。但我发现调试应用程序大小为46 MB,这对于这个简单的应用来说太大了。有没有办法优化应用程序大小?因为Flutter应用程序大小比原生Android应用程序大。
答案 0 :(得分:2)
Flutter调试应用程序非常大,要优化应用程序,您应该使用
将其构建为发布版本flutter build apk (flutter build defaults to --release).
答案 1 :(得分:1)
首先,在发布模式下使用:
构建您的应用程序在您的终端中:
flutter build --release
或者只是指定目标:
Android Apk:flutter build apk --release
对于 Android App Bundle:flutter build app bundle --release
IOS:flutter build ios --release
默认情况下,flutter run
编译为调试模式。这解释了
应用程序的大尺寸。 调试模式(热重载、Dart Devtools 等)与发布模式(简单应用程序)
默认情况下 flutter build
为 发布模式 构建。所以你可以只做 flutter build
使用 --split-debug-info
标志可以显着减少代码大小。有关使用此标志的示例,请参阅 Obfuscating Dart code。
您可以采取的其他一些措施使您的应用更小:
您可以了解有关 Flutter 应用大小的更多信息 here
答案 2 :(得分:0)
减少APK大小:
如果您要构建android apk或捆绑软件,请确保您正在考虑
缩小
Proguard
请记住一些常见的事情
干净代码
删除未使用的插件
删除未使用的资产
删除未使用的字体等。
答案 3 :(得分:0)
尝试一下
flutter build apk --split-per-abi
答案 4 :(得分:0)
关注官方文档-https://flutter.dev/docs/perf/app-size
您可以做一些明显的事情来使应用程序更小:
答案 5 :(得分:0)
第 1 步:压缩资产所有资产(例如:使用 tinypng 或任何其他选项)
第 2 步:删除未使用的资源
您可以轻松地从 Android Studio 中搜索未使用的资源。只需按 Ctrl + Alt +Shift + i 并输入“未使用的资源”(不带引号)。这将执行 lint。运行 lint 命令(以及来自 IDE 的其他内容)的超级简单方法。 要么 在 Android Studio 菜单 > 重构 > 删除未使用的资源... 选择要删除的资源。您可以通过右键单击资源项来排除要保留的资源。 使用 Do Refactor 一次性删除所有资源。 更新:在 Mac 上使用 ⌘ +Option +Shift + i
第 3 步:将此代码放入 app/build.gradle
参考此链接了解更多关于 android ABIS (https://developer.android.com/ndk/guides/abis)
////注意:仅适用于构建发布应用程序(导致调试运行问题,因此在调试模式下运行时对其进行注释) 安卓 { 默认配置{ minSdkVersion 19 ..... //当应用程序处于调试模式时注释此代码 ndk{ abiFilters "armeabi", "armeabi-v7a","arm64-v8a" } } }
第 4 步:从 pubspec.yaml 中删除未使用的插件
第 5 步:使用以下命令构建您的 App Bundle
flutter build appbundle
flutter build appbundle --target-platform android-arm,android-
arm64,android-x64
您可以使用 Proguard 规则
构建类型{ 发布 { minifyEnabled true // 添加这个 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 添加这个 签名配置signingConfigs.release // 这是发布的默认值 } }
在android主目录中,你可以找到proguard-rules.pro,如果没有则new-> file -> proguard-rules.pro 创建这个文件
将此代码放入该文件中,并在 pubspec.yaml 中添加适当的插件规则 注意:添加插件所需的所有proguard,否则android应用程序将无法正常运行
## Flutter wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# -keep class com.google.firebase.** { *; } // uncomment this if you are
using firebase in the project
-dontwarn io.flutter.embedding.**
-ignorewarnings
还要转到您的 gradle.properties 并添加:
extra-gen-snapshot-options=--obfuscate
在你的 app/build.gradle
buildTypes {
release {
minifyEnabled true // added previously
shrinkResources true // add this
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro' // added previously
signingConfig signingConfigs.release // added previously
}
}