如何优化Flutter App大小?

时间:2018-03-30 00:56:53

标签: flutter flutter-test

我是原生Android开发人员,我开始使用flutter SDK。我按照官方的flutter doc开发了一个简单的应用程序。但我发现调试应用程序大小为46 MB,这对于这个简单的应用来说太大了。有没有办法优化应用程序大小?因为Flutter应用程序大小比原生Android应用程序大。

6 个答案:

答案 0 :(得分:2)

Flutter调试应用程序非常大,要优化应用程序,您应该使用

将其构建为发布版本
flutter build apk (flutter build defaults to --release).

Preparing an Android App for Release

Preparing an iOS App for Release

答案 1 :(得分:1)

有很多可能性:

首先,在发布模式下使用:

构建您的应用程序

在您的终端中: flutter build --release

或者只是指定目标:
Android Apkflutter build apk --release
对于 Android App Bundleflutter build app bundle --release
IOSflutter build ios --release

<块引用>

默认情况下,flutter run 编译为调试模式。这解释了 应用程序的大尺寸。 调试模式(热重载、Dart Devtools 等)与发布模式(简单应用程序)

<块引用>

默认情况下 flutter build发布模式 构建。所以你可以只做 flutter build

使用 --split-debug-info 标志可以显着减少代码大小。有关使用此标志的示例,请参阅 Obfuscating Dart code

您可以采取的其他一些措施使您的应用更小:

  • 删除未使用的资源
  • 尽量减少从图书馆导入的资源
  • 压缩 PNG 和 JPEG 文件

您可以了解有关 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

您可以做一些明显的事情来使应用程序更小:

  1. 删除未使用的资源
  2. 最小化从库导入的资源
  3. 支持有限数量的屏幕密度
  4. 压缩PNG和JPEG文件

答案 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
    }
}