Flutter 混淆打包以及一些注意事项
混淆Dart代码
Flutter 1.16.2 以上默认支持混淆,不需要特殊设置,只需要在构建命令后面加上
--obfuscate --split-debug-info=/<project-name>/<directory>
具体可看官方文档:混淆Dart代码
构建发布包
具体配置请看官方文档(只有很少的配置,很简单):生成并发布Android应用 、 生成并发布iOS应用
构建命令:
Android:
flutter build apk --obfuscate --split-debug-info=./symbols
Google目前建议Android使用 App Bundle 的发布格式,构建命令如下:
flutter build appbundle --target-platform android-arm,android-arm64,android-x64
有不知道 App Bundle 发布格式的同学可以查看官方文档(中文的): Android App Bundle 简介
iOS:
flutter build ios --obfuscate --split-debug-info=./symbols
注意:
- 如果不想混淆代码的话,iOS只需要去掉 “--obfuscate --split-debug-info=./symbols” 进行构建就可以了,Android 的话单独去掉 “--obfuscate --split-debug-info=./symbols” 是没有用的,需要在构建命令后面加上 “--no-shrink” 表示不混淆代码:
flutter build apk --no-shrink
- 如果你的程序入口不是“main.dart”,而是像我一样改成“MyApp.dart”的话,需要在构建命令后面加上 “--target=lib/MyApp.dart” 指定程序入口:
flutter build apk --target=lib/MyApp.dart 或者 flutter build ios --target=lib/MyApp.dart
- 在Android上如果你觉得生成出来的apk包太大,或者觉得只需要适配单独一种架构的手机就可以了,你也可以单独构建一种架构的apk包:
此命令会生成三种架构单独的apk包:app-armeabi-v7a-release.apk、app-arm64-v8a-release.apk、app-x86_64-release.apk,大大减少apk包的大小。flutter build apk --target=lib/MyApp.dart --no-shrink --split-per-abi 或者 flutter build apk --target=lib/MyApp.dart --no-shrink --target-platform android-arm,android-arm64,android-x64 --split-per-abi
问题
转载自:https://juejin.cn/post/6909280872856289288