Flutter 混淆打包,签名等问题

来源:flutter.dev 更新时间:2023-05-25 21:55

签名:构建和发布为 Android 应用-签名 - Flutter 中文文档

keytool -genkey -v -keystore C:\Users\Administrator\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias zhijian

keytool -importkeystore -srckeystore C:\Users\Administrator\upload-keystore.jks -destkeystore C:\Users\Administrator\upload-keystore.jks -deststoretype pkcs12

 




构建一个 APK

虽然 app bundle 比 APKs 更被推荐使用,但是有一些 Store 目前还不支持 app bundle方式。这种情况下,要为各种目标 ABI (Application Binary Interface) 分别构建发布的 APK 文件。

如果你完成签名步骤, APK 就被签名了。

使用如下命令:

  1. 输入命令 cd [project]

  2.  运行flutter build apk --split-per-abi  flutter build 默认带有 --release 参数)。
     

          这个命令会生成如下三个 APK 文件

  • [project]/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
  • [project]/build/app/outputs/apk/release/app-arm64-v8a-release.apk
  • [project]/build/app/outputs/apk/release/app-x86_64-release.apk

如果移除 --split-per-abi 将会生成一个包含 所有 目标 ABI 的 fat APK 文件。这种 APK 文件将会在比单独构建的 APK 文件尺寸要大,会导致用户下载一些不适用于其设备架构的二进制文件。



经过测试 flutter最新版 (2.2.3) 默认添加:“--no-shrink” 表示不混淆代码(如下图:)

所以安卓同样需要加上 --obfuscate --split-debug-info=./symbols 命令才能混淆
 

最终命令:

android:
flutter build apk --split-per-abi --obfuscate --split-debug-info=./symbols

ios:
flutter build ios --obfuscate --split-debug-info=./symbols