心仪的插件等得天荒地老还是不更新,偏偏部分功能可以使用,部分软件又不兼容。心痒难挠啊啊啊。今天介绍一个方法,给我们的插件建个“白名单”
一、实例
iOS6时代非常出名的未上架插件【Emphasize】能给系统配置“颜色主题”如图:
非常性感吧。作者源:rpetri.ch/repo
可惜打开微信的时候却是这样的:
我去,彻底被废了。
怎么办?
二、白名单的建立
基于MobileSubstrate的插件,都会在目录\Library\MobileSubstrate\DynamicLibraries\ 下面生成两个文件,一个是xxxx.dylib 另一个是xxxx.plist dylib 通常是插件主程序(或者是唤醒程序) 而plist 则包含了插件的重要信息:作用位置! MobileSubstrate 会根据.plist文件的记载在特定软件运行的时候才加载插件。
比如插件【PreferenceLoader】的.plist中内容是
Filter Bundles com.apple.Preferences
com.apple.Preferences 就是系统设置,PreferenceLoader 只有在系统设置中起作用。
OK,回到Emphasize,他定义的是:com.apple.UIKit ,这个大了。对应的是系统UI,所以他的作用是“广域”的。
我们把这句去掉,添加能够正常使用的软件ID即可控制插件按需启动了。
比如我是这样改的:
Filter Bundles com.apple.Preferences com.eicodesign.weibopro com.apple.MobileAddressBook com.apple.mobilemail com.apple.mobilenotes com.apple.mobilesafari com.apple.mobileslideshow com.apple.reminders com.apple.mobilephone
系统自带的几个主要软件,还有常用的weico(其实是做个例子,这个软件基本上用不到),都在列表里了。效果非常好!
软件ID可以在软件 .app 目录中的info.plist 中的 CFBundleIdentifier 字段查找。
改完以后respring即可。如果临时添加软件,只需将软件在后台杀死,再次加载,已经ok。
具体修改使用iFile或者其他桌面端的软件就见仁见智了。不再赘述。祝大家DIY开心。