我在使用java开发android应用程序方面有很好的经验。最近,我开始了解弗利特。所以,我试着根据官方教程创建一个简单的android应用程序。但令人惊讶的是,调试应用的大小是25MB,而发布apk的成本超过了7MB。与本地开发的Android应用相比,它确实更大。
有没有办法优化它?
首先检查这些:
如果你有太多的字体会严重影响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
弗利特团队在这里承认了这一点。
这里有一个解释,引用同样的话-
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大小上的相对差异可能会更小。颤振的头顶大小是固定的。
我用来减少应用程序大小的一种方法是使用;
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