flutter我虽然知道的早,但是还没有使用过,今天就第一次打包Android APK试试大小,因为选择flutter我必须考虑他的包大小,如果它打包apk比react native还要大我肯定不考虑。

在打包之前我猜apk应该会很大,起码30m左右,但是当我把release包build出来后,我大吃一惊,很满意!

首次安装 flutter SDK是3.0.2,是当前最新版。

安装配置好环境变量PATH后,重新命令行界面,就可以通过 flutter doctor命令确认已经安装成功。

flutter doctor

然后使用flutter create learn_flutter

flutter create learn_flutter

项目几秒就创建成功,这点比react-native体验好多了。

然后我开始flutter run运行,竟然不成功!大概错误内容是:

License for package Android SDK Build-Tools 30.0.3 not accepted.

 我以为是我的工具安装不对,但是我怎么搜都找不到30.0.3的工具呀!网上回答都是sdk tool中安装,可我找不到30.0.3的版本。

后来发现是flutter 的android sdk配置路径问题。应该一下这样的命令来配置flutter应用的android sdk

flutter config --android-sdk /path/to/android/sdk
flutter config --android-studio-dir /path/to/android/studio

重要提醒:千万不要在 android项目的根文件 local.properties中配置。我折腾了一个小时就是因为在这里像安卓项目和react native那样配置android sdk路径。每一次运行 flutter run命令,这个配置又恢复到不正确的路径了。

正确配置好 android adk路径后,就可以在模拟器里运行了,我尝试改了改代码,能够正确在模拟器里看到效果!确定这步没问题了。

我准备开始 build release版本的 apk,但是我碰到新问题了,结果大概是需要java11来打包apk。!不管了,我安装java11.

安装好java11后(环境变量替换了java8)需要在Android工程的gradle.properties文件中添加如下jdk的路径

org.gradle.java.home=path/Java/jdk-11.0.15.1

并修改Android工程app\build.gradle文件。

 

 

好了,终于可以build apk了。build release apk需要以下命令。

flutter build apk --target-platform android-arm,android-arm64
flutter build apk --target-platform android-arm,android-arm64 --split-per-abi

命令说明以下:

⾸先 flutter build apk 表⽰当前构建 release 包
后⾯ android-arm,android-arm64,android-x64则是指定⽣成对应架构的release包
最后的 --split-per-abi则表⽰告知需要按照我们指定的类型分别打包,如果移除则直接构建包含所有 CPU 架构的 Apk 包。

--obfuscate:开启混淆操作
--split-debug-info=:将因混淆⽣成的 map 符号表缓存到此位置
 

第一串命令打包出来的 armv8a和armv7a的单指令集apk大约是5.8M,我很惊讶!这算小的了。

 

第二串命令打包出来的armv8a和armv7a指令集合并在一个apk的大小是 10.6M,我一样很惊讶!很满意!

最终得出一个结论,flutter 3.0 release apk 和 react native 0.68 release apk 大小是差不多的。

关注我站,www.zchawang.cn,一个小工具站。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐