3

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

4

6 回答 6

8

Flutter 调试应用程序非常大,要优化应用程序,您应该将其构建为发布版本,使用

flutter build apk (flutter build defaults to --release).

准备要发布的 Android 应用程序

准备发布 iOS 应用

于 2018-03-30T13:16:00.893 回答
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标志可以显着减少代码大小。有关使用此标志的示例,请参阅混淆 Dart 代码

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

  • 删除未使用的资源
  • 最小化从库中导入的资源
  • 压缩 PNG 和 JPEG 文件

您可以在此处了解有关 Flutter 应用程序大小的更多信息

于 2021-02-06T23:43:17.810 回答
1

减小/优化应用程序大小

第 1 步:压缩资产所有资产(例如:使用 tinypng 或任何其他选项)

第 2 步:删除未使用的资源

您可以轻松地从 Android Studio 中搜索未使用的资源。只需按 Ctrl + Alt +Shift + i 并输入“未使用的资源”(不带引号)。这将执行 lint。运行 lint 命令(以及 IDE 中的其他内容)的超级简单方法。或在 Android Studio 菜单 > 重构 > 删除未使用的资源...中选择要删除的资源。您可以通过右键单击资源项来排除要保留的资源。使用 Do Refactor 一次删除所有资源。更新:使用 ⌘ +Option +Shift + i for mac

第 3 步:将此代码放入 app/build.gradle

请参阅此链接以了解有关 android ABIS 的更多信息 ( https://developer.android.com/ndk/guides/abis )

///注意:只有工作的构建发布应用程序(导致调试运行问题,所以在调试模式下运行时注释它) android { defaultConfig { 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 规则

buildTypes { release { minifyEnabled true // 添加这个 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 添加这个 signingConfig 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
    }
}
于 2021-07-07T05:35:30.827 回答
0

尝试这个,

flutter build apk --split-per-abi
于 2019-10-17T14:54:01.837 回答
0

关注官方文档 - https://flutter.dev/docs/perf/app-size

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

  1. 删除未使用的资源
  2. 最小化从库中导入的资源
  3. 支持有限数量的屏幕密度
  4. 压缩 PNG 和 JPEG 文件
于 2020-02-18T07:34:41.563 回答
0

减小 APK 大小:

如果您正在构建 android apk 或捆绑包,请确保您正在考虑

缩小

保卫

一些常见的事情要记住

干净的代码

删除未使用的插件

移除未使用的资产

删除未使用的字体等

于 2019-08-17T09:05:37.340 回答