本文只适用于机审
4.3,区分机审和人审请找你们后端或运维看看审核期间有没有IP登陆。
我们虽然无法得知苹果实际的机审原理,但从程序员的角度还是能分析出一些东西的。
先说下手动操作,无非是在xcode上修改文件名类名,然后在可能引用的地方替换类名和文件名(header),要注意的地方是替换的时候要选中匹配大小写
;然后是文件夹名称跟文件名一样的时候,可能文件夹名称也要跟着改名,否则替换之后路径引用可能找不到。
如果是要脚本批量操作,那最好先对工程整理下,确保以下几点能让脚本写的更简单更可靠:
脚本的话就是遍历文件,判断前缀、是否排除在外,修改文件名类名,在其他文件中查找替换。用python的话应该不是什么大问题。一个小技巧是改完后可以替换一下xxx.xcodeproj/project.pbxproj
里的相应字符串,这样xcode打开工程的时候就不用手动再添加进来。
OC头文件的声明必然是在@interface @end
之间,实现是在@implementation @end
之间,C++的大部分应该是以}
结尾,直接在相应的地方插入垃圾函数,模板可以直接写个HelloWorld
输出个随机字符串。在这一步随机名称是个坑,可以去网上找下常见英文单词
,格式化后把太短的、太长的、看着不爽的,最重要的是语言的关键字
如break,false,if之类的删掉
根据我们猜测的路径应该是不影响打包的,所以我们可以简单的把垃圾类文件都放到同一个文件夹下方便管理,写好2.2后这一步应该就是顺手的事情了 。我不太确定的是如果外部不引用这些垃圾类,编译之后它们会不会因为太独立而被检测认为是垃圾代码。所以保险起见,我实现的时候写了一个单独的头文件include了所有这些生成的垃圾类,然后在外部include了这个单独的头文件
资源文件有很多类型,通常来说文本文件添加随机数量的空格或空行应该就可以了。图片的话常见的png和jpg都是有固定的结尾字节块的,png是00 00 00 00 49 45 4E 44 AE 42 60 82
,jpg是ffd9
,用16进制查看工具打开图片应该能注意到这个规律,也可以参考下常见图片文件格式简析。在结尾字节块添加的内容是不会影响图片本身显示的,我们可以利用这个来改变图片的md5值。音效应该也有相应的格式,期待大佬科普下!
跟2.3类似,不过这个最好也随机下创建文件夹显得真实点,一些文本文件是什么格式都有各自定义,png和jpg的话就随机写任意长度的任意字符,最好结尾加上相应的结尾字节块,防止2.5后又执行2.4导致出错。
上面的基本都能脚本自动化执行,完了后工程名最好也在xcode改下;info.plist会被打包进ipa,最好也多加几个字段上去;target能改也改下方便识别;scheme关联到导出的ipa文件名,不是特别麻烦也顺手改掉;包名、启动页、图标应该都是基本的东西不会被忽略。
这些改完之后,希望你自己也不认识它了!
相关工具会慢慢整理到iosMixTools,欢迎大家讨论和提Issues。