安卓打包分为两种:
- 拆分打包(上传应用市场使用)
- 合并打包(分发使用)
1. 拆分打包
拆分打包是指的针对不同的CPU进行打包,比如arm和arm64指的是32位、64位的abi。
这种方式主要是为了上架google市场使用的。
这种方式打的包,其中的版本号不是flutter的pubspec.yaml中填写的版本,而是会带上前缀。这是google官方推荐的方式(https://developer.android.com/studio/build/configure-apk-splits#configure-APK-versions)。
即如果我们版本code填10,那么会带有前缀,比如“1010”、“2010”,比如我们填写的版本号是10,那么通过反编译apk我们可以看到。
app-armeabi-v7a-release.apk打出来的versionCode是1010。
app-arm64-v8a-release.apk打出来的versionCode是2010。
app-x86_64-release.apk打出来的versionCode是4010。
拆分打包命令
flutter build apk --obfuscate --split-debug-info debuginfo --target-platform android-arm,android-arm64,android-x64 --split-per-abi
此时会生成
app-arm64-v8a-release.apk app-armeabi-v7a-release.apk app-x86_64-release.apk
对应不同CPU类型的包
2. 合并打包
合并打包是指将两个版本或者三个版本的安装包,打到一个apk中,即会增加apk的大小,但是对于国内手机是比较友好的。比如2020款的红米9A居然还是32位版本。
这种方式可以用来在国内的各种分发平台或者直接发给用户使用。
flutter build apk --obfuscate --split-debug-info debuginfo --target-platform android-arm,android-arm64,android-x64
去掉--split-per-abi即可,target-platform选择自己想要加入的cpu架构,这种打包会生成
app-release.apk
这种打包方式会增加apk包的大小。