spamCode Git下载地址
https://github.com/oneyian/SpamCode
iOSMixProject Git地址
https://github.com/JourneyYoung/iOSMixProject
KLGenerateSpamCode
https://github.com/klaus01/KLGenerateSpamCode
前言:这三种工具是为了应对应用的审核(Guideline 4.3 Design Spam),避免苹果机审检测概率。spamCode
和iOSMixProject
都是基于KLGenerateSpamCode
改进,用法相同
主要功能
- 修改工程名
- 修改类名前缀
- 扫描工程中的代码,生成同等数量的 Category 文件,文件中及是同等方法数量的垃圾代码。
- 修改 xxx.xcassets 文件夹中的 png 资源文件名。
- 删除代码中的所有注释和空行。
参数说明
(必填) 源码文件夹绝对路径(如:/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 文件中的注释和空行。
使用案例(以spamCode为例)
使用前
-
下载spamCode以及你要混淆的项目
-
打开spamCode工程切换到配置参数的地方,具体步骤如下
-
参数配置(参数说明见上)
(1).修改类名: -modifyClassNamePrefix [xcodeproj文件的绝对路径,不是pod安装后的那个打开文件] [旧类前缀]>[新类前缀], LXW是旧类前缀
,XX是新类的前缀
(2)修改方法名:-chageAPIPrefix [旧方法名前缀]>[新方法名前缀] 注意,前缀要有“”才能被识别,如果之前工程中没有xx下划线开头来命名方法的,此项不要勾选,Demo_是原先方法名的前缀
,LXW_是新方法名的前缀
(3)修改工程的名称:-modifyProjectName [原工程名]>[新工程名]
(4)垃圾代码生成:-spamCodeOut /Users/lixuewen/Desktop/confusion/confusionDemo_test/垃圾代码 垃圾代码文件夹路径 [垃圾代码参数] ccc就是垃圾代码的参数
(5) 如果用到了修改项目名,最好分两批先修改方法名等,最后在修改项目名,因为修改项目名称之后其他的绝对路径就发生了变化,会报错。如果碰见报错或者修改不成功,就重新填写参数,那个失败了就单独怕那个
注:
- 点击colse,运行项目,查看效果
修改前
修改后(生成的垃圾代码需要手动拖拽)
如果出现了下图的报错
解决方法:
cmd + shift + k
cmd + option + shift + k
重启 Xcode