当前位置: 首页 > 知识库问答 >
问题:

Flutter的应用程序太大了

太叔小云
2023-03-14

我在使用java开发android应用程序方面有很好的经验。最近,我开始了解弗利特。所以,我试着根据官方教程创建一个简单的android应用程序。但令人惊讶的是,调试应用的大小是25MB,而发布apk的成本超过了7MB。与本地开发的Android应用相比,它确实更大。

有没有办法优化它?

共有3个答案

高博涉
2023-03-14

首先检查这些:

  • 正如其他答案提到的那样,删除所有不必要的资产(图像、字体和文件)。

如果你有太多的字体会严重影响apk的大小,Flatter也为你提供了一个解决方案,为你创建了一个从谷歌字体库获取字体的软件包(非常棒的软件包,让你可以在任何地方使用这么多字体和灵活性)。在这里拿到包裹,在这里阅读更多内容。

>

  • 删除不需要的、不使用的软件包/插件(虽然影响不大)。

    删除未使用的资源

    尽量减少从库中导入的资源

    支持有限数量的屏幕密度

    压缩PNG和JPEG文件

    请阅读以下内容:测量应用程序的大小

    请注意以下几点:

    如果您使用flutter build apk构建apk,它将包含arm-32和arm-64 apk(当您构建apk时,flutter将在控制台中显示)。如果你正在构建应用程序包,这不是一个问题,它的大小要小得多。

    为了避免一个包含arm-32和arm-64的扁平apk,可以使用以下两个命令分别构建它们:

    flutter build apk --target-platform=android-arm
    

    上面将产生arm-32位apk。转到project-

    然后在pubspec中增加版本代码。yaml,下一步flatter pub get并执行以下操作:

    flutter build apk --target-platform=android-arm64
    

    上面会产生arm-64位apk。转到project-

    然后您可以分别提交两个apk(先提交较低的apk版本)。

    由于必须通过增加版本代码来运行两个命令,所以flatter通过这个命令(flatter)使它变得更容易

    从文件:

    从命令行:

    Enter cd <app dir>
    (Replace <app dir> with your application’s directory.)
    Run `flutter build apk --split-per-abi`
    (The flutter build command defaults to `--release`.)
    

    这个命令产生两个APK文件:

    <app dir>/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
    <app dir>/build/app/outputs/apk/release/app-arm64-v8a-release.apk
    <app dir>/build/app/outputs/apk/release/app-x86_64-release.apk
    

    删除--split per abi标志将生成一个fat APK,其中包含为所有目标abi编译的代码。这样的APK比拆分后的APK更大,导致用户下载不适用于其设备架构的本机二进制文件

    在这里阅读更多。

    我还听说,在最新的颤振更新中,他们使颤振应用程序的大小变得更小。还有一个问题:https://github.com/flutter/flutter/issues/16833

  • 白子昂
    2023-03-14

    弗利特团队在这里承认了这一点。

    这里有一个解释,引用同样的话-

    2018年8月,我们测量了最小颤振应用程序(没有材料组件,只有一个单中心小部件,使用颤振构建apk构建)的大小,作为发布apk捆绑和压缩,约为4.7MB。

    对于这个简单的应用程序,核心引擎大约是3.2MB(压缩),框架应用程序代码大约是840KB(压缩),LICENSE文件是55KB(压缩),必要的Java代码(classes.dex)是57KB(压缩),还有是大约533KB的(压缩)ICU数据。

    当然,YMMV,我们建议您通过运行flatter build apk并查看build/app/outputs/apk/release/app release来测量自己的应用程序。阿普克。

    此外,较大的应用程序在apk大小上的相对差异可能会更小。颤振的头顶大小是固定的。

    潘安邦
    2023-03-14

    我用来减少应用程序大小的一种方法是使用;

    flutter clean
    

    在我运行build命令之前;

    flutter build appbundle --target-platform android-arm,android-arm64
    

    当我在不使用clean命令的情况下运行build命令时,我会得到大约32mb,但如果我先运行clean命令,我会得到大约18mb

     类似资料:
    • Android上的Flatter示例应用(发布版)是13MB的应用大小12MB的数据。为什么有12MB的数据?在iOS上,应用程序的大小甚至是47MB(我希望这是由于某种多架构的原因,但可能是最终大小)

    • 我无意中发布了一个APK,它有一个非常大的版本代码。即整数值的最大值。

    • null null 错误:任务“:app:MergedebugJavaResource”执行失败。 执行com.android.build.gradle.internal.tasks.workers时出错$ActionFacade文件“com.android.builder.files.zipcentraldirectory@48b70346”已删除,但在缓存中找不到以前的版本 null 生成在2

    • 请帮帮我!该应用程序接近完成,因为我确实运行了flutter upgrade来解决一个bug,所以我必须运行:flutter clean flutter channel master flutter upgrade flutter run 现在它不再启动了,下面的代码出现了… []Flutter(通道稳定,1.22.5,在Mac OS X 10.15.7 19H114 darwin-x64,现场显

    • 使用appbundle模式构建我的应用程序给了我这个: 颤振构建appbundle 构建/应用/输出/捆绑/发布/应用。aab(16.0MB)。 当上传到播放控制台时,它说应用程序大小将在9,08和9,43 MB之间。但是,在Play Store上,当下载到我的设备时,它是22 MB。 建立APK,我有这个: Flutter构建apk-每abi分裂 构建/应用/输出/apk/发布/app-arme

    • null 脚本'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle'行:838 出了什么问题: 任务“:app:CompileFlutterBuildreLease”执行失败。 null null 应用程序:Build.Gradle