iOS flutter 上架 4.3(a)【flutter 专讲】

​ ​ 如果你的app是flutter开发的,而且遇到了4.3, 请停下所有的计划, 本篇对flutter app 4.3问题进行专讲 那么首先有两种情况 :  1 : flutter代码已经上架过, 再次使用这套代码上架的

如果你的app是flutter开发的,而且遇到了4.3, 请停下所有的计划, 本篇对flutter app 4.3问题进行专讲


那么首先有两种情况 : 


1 : flutter代码已经上架过, 再次使用这套代码上架的这种情况

2: flutter代码完全新写, 还是遇到了 4.3 


我们首先来讲解第一种情况, flutter代码已经上架过, 再次使用这套代码上架的这种情况


那么我们可能都会知道, 第一步要进行代码混淆 ,那么问题来了, flutter的app到底应该如何混淆, 原生的app的混淆方式, 是否同样适用于flutter呢 .


先给出答案, flutter的代码混淆和原生截然不同, 这是因为flutter的编译的产物决定的


flutter 的代码最后被编译到了哪里?  打开你的ipa包, 你会发现, flutter 最后会被编译成两个动态库


1: flutter 框架 动态库 Flutter.framework


2: 你的flutter 代码 动态库 App.framework



3: 你的flutter所引用的插件同样以动态库集成在framework文件夹中



了解了你的flutter 应用编译产物, 那么你才会在混淆代码的时候,  清楚方向

那么你应该问自己了, 修改了flutter工程中的 类名, 方法名, 属性名, 常量名, 最后到底影响了谁? 

是否影响了ipa中的可执行文件?  压根不影响

是否影响了ipa中的Flutter.framework ?   几乎不影响

是否影响了ipa中的 App.framework ?   影响


我怎么确定影响呢 ?  我们来拆解 App.framework 动态库, 我们使用我自己写的python脚本 看看里面的内容

1: 这是一些符号表, 我们暂时忽略不看

2:  到这里, 我发现了我在flutter中的定义的一些类名, 方法名


结论 : 也就是说你的flutter 使用原生的方式进行混淆后, 影响的只是 App.framework 动态库, 这就是你的flutter 遇到4.3的根本原因



进入正题:  那么混淆应该用什么方式? 

想要解决问题, 你必须找到问题, 再去分析问题, 问题也自然而然就会得到解决,  问题找到了, 我们进入分析阶段


1:你的flutter 混淆后只改变了单一的 App.framework 动态库, 我想要我的ipa 发生较深层次的变化, 是否应该使所有的动态库发生变化? 


2: 你的flutter 应用的ipa中可执行文件Runner 是否也要发生变化, 如何让可执行文件发生变化? 


3: 如果你的可执行文件体积较小,可能甚至几十k, 内部几乎没有代码 ,那么苹果机审如何对这种可执行文件进行审查 ? 



我并不能直接说出答案, 但是我抛出了问题


动动你的小脑瓜, 你也许就会得到答案



返回技术博客 · 返回首页 · 服务价格