程序猿的你收到大礼包了吗?
突然间的2.1大礼包成了一个重灾区,苹果加大了中国区的审核力度。但其实归根结底,会触犯到这个大礼包的App很大部分或者说几乎都是和这个关键词挂钩的 ---“马甲包”!
这个“马甲包”的含义我们就不在多做解释,相信大家都明白。但其实作为一个开发者而言,自己是很不喜欢马甲包,但没办法有些时候很多事不是你想怎样就能怎样的,那既然因为这个原因收到2.1的大礼包那你该怎样处理呢?总结自己和这个2.1纠缠的经验,我们在下面会提供一些方法来处理。
关于App Store的审核团队其实你有必要了解一下
这一点其实我觉得我们真的还是有必要了解一下的,比如说我听到的下面这些疑问:
1、App Store中国区的审核是在中国吗?
2、审核时间是不是和我们上班的时一样?
3、App Store的审核是不是都是人工审核?
4、审核团队肯定Very大,这次提交不通过换个账号在提交就不会是同一个人,会不会审核一不小心过了?
5、审核流程到底是什么样子的?
6、审核我App的是GG还是MM,の这个就是我们乱扯的......
针对上面的这些问题,用我自己收集到的信息再加上自己的判断说一些上面的这些问题:
1、App Store中国区的审核是在美国,不在中国!
App Store中国区的审核和其他区的一样,审核是统一集中在美国,并且是有中国人在的,这也就是为什么他们那么了解中国政策以及有些同学说给他们发的中文邮件也OK的原因,还甚至有同学说苹果给自己回复了中文邮件,这个真的没遇到过,但我还是建议发邮件的时候最好用中英文双语比较好,因为开发者的邮件大多是直接“谷歌、有道”翻译的!有些翻译的会比较难理解,如果你中文在写一遍能帮助到审核人员正确理解你的意思!
2、审核时间是不是和我们上班的时一样?
の要这么想就真的错了,审核时间是北京时间夜晚,按照我们和美国的时差,你睡觉的时候就是人家上班的时候,这也说明了审核地点的确是在美国!你要连我们项目的审核时间都不知道是晚上,那我只能说小伙子,你晚上睡得太早了!告诉你们老板 you need add class!
还有一点这里需要提的,按照我提交几十次APP的经验,你要想第二天又个审核结果,最好在我们北京时间早上提交应用,这也就是为什么我们早上有了审核结果的时候,要想尽快再有结果,就最好在早上改好重新提交审核!!要是到了中午,那一般情况下就得隔天才有结果了!
3、App Store的审核是不是都是人工审核?不 不 不
今年之所以大片的出现2.1大礼包,就是因为你死在了机器手里,这里我们把审核的大概的流程也说一下,等于把第五个问题在这里也提前回答了:
预审阶段
提交App Store之前 Application Loader 做的那些就算试一次预审了,这关都过不了,那就说明包有问题啊!
我们提交之后的等待审核
提交之后会进入等待审核,这一步其实还是机器审核的,人工智能在这一步应该有用到,并且在这一步会有这样一个操作: 账号定位和代码定位。这两个问题很关键, 账号定位之后后续提交的项目都会受到前面提交版本的影响的,这点相信都有体会和理解,再有一点就是代码定位,这个就没有账号定位那么简单了。假如你的项目被拒了,你换个账号提交,这时候苹果扫描到你的代码数据和以前包的代码数据很相似的时候,可能就会给你一个2.1大礼包了,这个就得我们做些代码混淆或者天啊及垃圾代码的处理,这些后面说,知道有这么回事就可以了。所以说只有他帮我关闭机审就基本十拿九稳
审核通过之后就看是你自己是选择手动了手动发布还是自动发布了,这一步我们就不在多说了!
4、审核团队肯定Very大,这次提交不通过换个账号在提交就不会是同一个人,会不会审核一不小心过了?
关于这个问题,我直接给出回答就是错了,团队真的不大,很有可能你就两次装车到同一个人手里,关于这个问题再给大家看一篇比较有说服力的文章,可以很好的帮你解决这个疑问!
2018-05-29揭秘苹果App Store审核团队,知己知彼好过审
5、2.1大礼包怎么处理?
说怎么处理之前至少得说说什么是2.1大礼包啊!下面是这个大礼包的截图,原邮件和谷歌翻译版同框!
这就是传说中的2.1大礼包,针对上面的问题说说我们能做的处理有哪些!
首先:要是你的App没有触犯到上面的这写内容(其实大家有没有触犯这些心理有很清楚的,哈哈)建议真诚的回复苹果的邮件,好好沟通,当然剩下的内容你也就不用再看了,赶紧去给苹果写邮件去吧!
其次:真的触犯了这些的,我们动手吧!
要是你的应用的确是马甲包,你要做的就是下面这些事了:
1、修改工程名
2、图片资源修改名字,并且改变图片的hash值,不要让检测到时以前被拒的资源
3、类名你也得改改了
4、混淆随机添加垃圾代码、参数
5、修改方法名
6、重要类中的方法进行打乱排序
7、如果可以建议换个账号提交,并且换个IP去提交
8、如果可以建议换一台电脑去打包
9.一个账号只提交一个包,一台电脑不能提交超过23个包
1、修改工程名
上面这两篇属于手动修改的,当然我们还是有脚本的,脚本的地址我们在最下面给大家。以及脚本的一些使用说明我也会在下面再细说的。
2、图片资源修改名字,并且改变图片的hash值
关于这一点,在下面的脚本中我们 .xcassets 文件里面的资源是直接能用脚本改的,其他的一下资源可能的我们手动改一下,当然你要改脚本也是完全可以的,因为我们站在巨人的肩膀上,而巨人把脚本开源了!
剩下的这些修改类名以及修改函数名这些等等的我们的脚本里面都有,我们在这里也就不在专门去说了。我们说重点吧,脚本走起......
使用ImageMagick对 png 图片做轻量压缩,及不损失图片质量,又可改变图片文件 hash 值。方法:
安装 ImageMagick,brew install imagemagick
压缩工程目录下所有 png 文件,find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;
你要的重点在这里!
首先,工具获取地址.....
加群获取混淆工具【ios苹果2.1大礼包交流】:https://jq.qq.com/?_wv=1027&k=58w3RR2
这里说两点是需要注意的,我们在图上有标注,但这里还是再说一次会比较好:
1、绝对路劲一定要注意!!
2、生成垃圾代码存放路劲,你可以在桌面直接建一个文件夹保存就行了,他会保存生成的.h 和.m的文件,当你编译的时候有时候会生成私有方法,报错的你直接删除就行了,反正都是垃圾代码,但在项目中还是新建一个文件保存吧,不然会对以后的开发者造成误导!
注:该工具由内部人员指导搭建的!!!非常好用
马甲包混淆教程请看我的另一篇文章:https://www.jianshu.com/p/91fc128bc980
使用教程:
本工具用于应对苹果对重复应用的审核(Guideline 4.3 Design Spam),避免苹果机审检测概率。
新增功能
除了已有的图片资源递增修改、修改工程名、类前缀修改(修改了遍历方案)外,还加了一些骚东西
0、直接在工程中添加垃圾代码,垃圾代码的规则可自己修改脚本代码自定义
1、混淆随机添加垃圾代码、参数
2、修改方法名前缀
3、修改方法名,使用plist文件创建原始方法名仓库,共有6^6个方法名可以配置,随机方法名配参数
4、删除垃圾代码。以脚本前缀为索引
5、混淆概率
6、付费功能:协助上架2.1大礼包问题包上架
修改工程名
修改类名前缀
扫描工程中的代码,生成同等数量的 Category 文件,文件中及是同等方法数量的垃圾代码。
修改 xxx.xcassets 文件夹中的 png 资源文件名。
删除代码中的所有注释和空行。
用 Xcode 打开工程并配置参数。如图
运行
使用二进制文件,在终端中执行 GenerateSpamCode
$ ./GenerateSpamCode \
/Users/kelei/Documents/work/git/projectName/source \
-deleteComments
参数说明
(必填) 源码文件夹绝对路径(如:/Users/kelei/Documents/work/git/projectName/source)
-modifyProjectName [原名称]>[新名称] 修改工程名。程序会修改原名称-Swift.h、Podfile、原名称-Bridging-Header.h、源码文件夹绝对路径、原名称.xcodeproj和原名称.xcworkspace的名称和内容。Podfile被修改后需要手动pod install
-modifyClassNamePrefix [工程文件 xcodeproj 绝对路径] [原前缀]>[新前缀] 修改源代码类名前缀。程序会扫描源码文件夹绝对路径下的 .h .swift 文件,修改文件名,修改使用该类名的代码,修改工程文件中的文件名。文件名有原前缀的会修改成新前缀,如:原前缀ViewController变成新前缀ViewController;没有原前缀的会增加新前缀,如:ViewController变成新前缀ViewController。
-spamCodeOut [垃圾代码文件输出目录] [垃圾代码方法增加的参数名] 生成垃圾代码。程序会扫描源码文件夹绝对路径下的 .m .swift 文件中的类和方法,并生成category和extension文件,文件中的方法是在代码原方法的基础上增加垃圾代码方法增加的参数名参数。如:-spamCodeOut /dir AppLog,- (void)setupKeys {}>- (void)setupKeysAppLog:(NSString *)appLog {},- (void)foo:(NSString *)str {}>- (void)foo:(NSString *)str appLog:(NSString *)appLog {}
-ignoreDirNames [忽略文件夹名称字符串] 忽略这些文件夹,对-modifyClassNamePrefix和-spamCodeOut参数有效。目前只会忽略源码文件夹绝对路径下一级的这些目录。如:/p/s -ignoreDirNames categorys,那么/p/s/categorys会被忽略,但/p/s/viewControllers/categorys不会忽略。
-handleXcassets 修改xxx.xcassets文件夹中的 png 资源文件名,同时也Contents.json文件中的关联名称,不会影响代码中使用图片。
-deleteComments 删除工程目录下 .h .m .swift 文件中的注释和空行。
另外修改图片 hash 值的方法
使用 ImageMagick 对 png 图片做轻量压缩,及不损失图片质量,又可改变图片文件 hash 值。方法:
安装 ImageMagick,brew install imagemagick
压缩工程目录下所有 png 文件,find . -iname "*.png" -exec echo {} \; -exec convert {} {} \;
使用经验
就我 2017-11 月的提交情况来看,只需要做如下修改就可以上马甲包了。
修改工程名
修改类名前缀
修改图片文件 Hash 值
修改 .xcassets 中的图片文件名
用别的电脑打包
已知问题
生成的垃圾代码文件可能是 .m 文件中实现的私有类,编译垃圾代码可能会报错,删除该垃圾代码 .h .m 文件及可。
最后参考的文章在这里:(感谢!)
如本文能帮助到你,请赞赏一下吧,哈哈!
本文由作者原创内容,转载请注明来源地址
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。