引起4.3的原因有很多,下面列举一些我总结的一些地方
影响4.3的原因
- 代码
- 资源
- 域名接口
- 元数据
- 第三方
- 设备关联
1-代码
代码是影响机审重要的部分,可以说占到4.3起码一半的比例,两份相同代码或者高度相似的代码,会直接被机审4.3。
1.1 首先我们谈一个概念,叫做雷同基线。
雷同基线=游戏引擎+固有第三方库+引用第三方平台+自定义内容雷同
游戏引擎:如cocos2d、unity等
固有第三方库:如AFNetworking、SDWebImage等
引用第三方平台:如Bugly
自定义内容雷同:如你自己封装的一些常用工具类
1.2 下面谈几个关于代码4.3的一些经验认知。
- 所以有的小伙伴就会遇到,两份底层完全相同,也就是雷同基线高度相似,上层功能代码又没有多少,一提一个4.3,还是换了账号提交的,就很懵,这就是这个雷同基线造成的。
- 还有一些做游戏的小伙伴,当下流行的方式一般是游戏项目+sdk,而游戏的源代码,例如:unity, 根据楼主的经验,苹果是不会去检测unity的代码的,而主要检测的就是c/c++/oc,甚至现在较为流行的swift二进制代码,所以sdk的代码量就占据了主导的地位,想要不被4.3,sdk代码的处理至关重要,而且一般公司都是一套sdk供给多个游戏接入,如果sdk代码处理不好,就极易造成4.3
- 如果你提交的ipa,被4.3了,而且还是机审的话,苹果会记录你的代码到数据库里,所以没处理好的情况下,你即使换账号提交审核,苹果也会从数据库里拿出来你被4.3的代码跟你新提交的进行比较。这里还有个小知识,如果你真的想换账号,怕代码关联,最好的方式就是把原来的包从itc后台删掉,然后等14天,14天之后苹果会从数据库里删除记录。
4.现在有一些比较好的平台能够帮助我们比较ipa包,例如https://www.quicksdk.com/,你可以传两个ipa上去进行比较,不过这个平台比较的应该也只是简单的,可想而知,如果你这里的相似度都过不去,那更别谈苹果的机审了。
ps:这里起码要达到30%以下,因为本来就只是简单的比较,苹果机审更严格。
1.3 代码如何处理
- 重构重写:底层能换的换掉,如常用的一些第三方库(AF、SDWeb、Masonry),上层实现方式也都改变下,如原本可能用的是代理实现的回调,可以改成block,综上等等等吧,意思就是要彻底改成和以前代码完全不一样的,就像写了一个新的代码。
- 混淆:重构重写的方式,必然又浪费时间又浪费精力,所以现在就出现了混淆的方式。市面上常见的混淆方式,大体上就是换名字(方法名、类名、目录名、属性名等)、加垃圾代码,当然混淆的效果也要看具体的实现方式和混淆的质量。
关于混淆这里就谈一点吧,如果苹果,对比两个工程中所有的字符串进行,就是我们硬编码的字符串@“xxx”这个,那么一定也会判断你这两个工程的代码高度相似,所以混淆的质量是很重要的。
未完待续......