尽管我早就了解Flutter,但直到今天才首次尝试打包Android APK。选择Flutter意味着我必须考虑其包大小,因此我决定先试一下。如果它的APK比React Native还要大,那肯定不会考虑使用它。
在打包之前,我估计APK的大小可能会很大,至少在30M左右。然而,当我构建出发布包后,我感到非常惊喜和满意!
最新版本的 flutter SDK 是 3.0.2,这是首次安装。
在成功安装并配置环境变量PATH后,您只需重新打开命令行界面,然后运行flutter doctor命令即可确认安装是否成功。
首先,运行命令flutter doctor
来检查您的Flutter环境。接下来,使用flutter create learn_flutter
命令创建一个名为learn_flutter的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工具中安装,可是我找不到30.0.3版本。
后来发现问题出在Flutter的Android SDK配置路径上。为了正确配置Flutter应用的Android SDK,应该执行以下命令:
请注意以下重要事项:在配置Android SDK路径时,请勿将其添加到Android项目的根目录下的local.properties文件中。我曾经因为在这里像安卓项目和React Native那样配置Android SDK路径而浪费了一个小时。每次运行flutter run命令后,该配置又会恢复到不正确的路径。正确配置好 android adk路径后,就可以在模拟器里运行了,我尝试改了改代码,能够正确在模拟器里看到效果!确定这步没问题了。
我正准备开始构建发布版本的apk,但是遇到了一个新问题。看起来我需要使用Java 11来打包apk!不过没关系,我会安装Java 11。
在安装Java 11之后(替换了环境变量中的Java 8),您需要在Android工程的gradle.properties文件中添加以下JDK路径。
请修改Android工程app\build.gradle文件,将以上是有关该命令的说明。org.gradle.java.home
的值改为path/Java/jdk-11.0.15.1
。
终于,我们可以开始构建APK了!构建发布版APK需要执行以下命令。
使用以下命令构建 APK 文件,目标平台为 Android ARM 和 Android ARM64:如果需要将 APK 文件按照 ABI(应用二进制接口)进行拆分,请使用以下命令:flutter build apk --target-platform android-arm,android-arm64
flutter build apk --target-platform android-arm,android-arm64 --split-per-abi
首先,flutter build apk 表示当前正在构建发布包。 接下来的 android-arm, android-arm64, android-x64 是用于指定生成相应架构的发布包。 最后的 --split-per-abi 则表示告知需要按照我们指定的类型分别打包,如果移除则直接构建包含所有 CPU 架构的 Apk 包。
--obfuscate:启用混淆操作 --split-debug-info=:将由混淆生成的映射符号表缓存到指定位置
我对第一串命令打包出来的 armv8a 和 armv7a 的单指令集 APK 大约为 5.8M 感到惊讶!这个大小真是小巧精致。
我非常惊讶并且非常满意,因为第二串命令打包出来的armv8a和armv7a指令集合并在一个apk中的大小只有10.6M!
经过比较,我们可以得出一个结论:Flutter 3.0发布版APK和React Native 0.68发布版APK的大小非常相似。
请关注我们的网站,www.zchawang.cn,这是一个小工具站点。
还木有评论哦,快来抢沙发吧~