Flutter / Dart 的 iOS 混淆

小蟹通用混淆工程列表
对应程序:通用混淆

Flutter 的 iOS 归档是 Xcode 工程,加上 Dart AOT 快照和插件原生代码。两款 Flutter 应用如果插件集合、Asset 目录名、Dart 库布局相同,界面不同也可能在审核里看起来相近。小蟹在 v1.6 加入 Flutter,把 Dart 和 ObjC / Swift 一样当作一等语言处理。

会混淆什么

C/C++/ObjC/Swift/Dart 的类型、字段、函数,以及配置开启时的源码膨胀和常量加密。iOS Runner 里的资源可改名、加密。调用栈混淆作用于已编译语言。混编工程(原生应用内嵌 Flutter 模块,或带原生插件)不需要为语言组合单独改写。

哪些应当排除

插件 Channel、Flutter 引擎约定的方法名、以及你用硬编码字符串调用的原生 API 应保持稳定。在工具里按文件或按语言排除。文档「排除混淆设置」写了类名、属性、继承链的通配规则。叙述版见 Flutter / Dart 注意点

调试和试用

混淆后仍可在 Xcode 调试。请用接近即将上传的归档来试。申请试用时注明 Bundle Id 和 Flutter 工程。如果要上多个相近客户端,同时阅读 4.3。逐步按钮说明在 Flutter 项目混淆教程

申请试用,归档后即可提审

下载应用中心,选择通用版或 Uniapp 专用版,在注册码页面申请授权。文档里有逐步操作。