工具篇---xcode插件使用
原理
在Xcode启动的时候,Xcode将会寻找位于~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中的后缀名为.xcplugin的bundle作为插件进行加载(运行其中的可执行文件),这就可以令我们光明正大合法合理地将我们的代码注入(虽然这个词有点不好听)Xcode,并得到运行。因此,想要创建Xcode插件,我们需要创建Bundle工程并将编译的bundle放到上面所说的插件目录中去,这就是Xcode插件的原理。
因为是注入方式添加插件,所以如果插件有问题闪退,那么Xcode也会闪退。
使用之前请先备份Xcode,安装插件后不可打包上传Appstore,使用请谨慎!
苹果为了避免类似 Xcode Ghost 事件的再次发生,Xcode8 禁用了插件机制,而开放了另一种形式:Source Editor extensions,但是这种形式局限性太大。本文介绍Xcode 8 继续使用插件。
实践篇
恢复Xcode 8 插件
-
原Xcode 插件安装目录
tips:如果遇到插件引起Xcode crash的情况,可在改目录下删除对应插件
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
-
删除所有原插件
cd ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins rm -rf ../Plug-ins
-
对Xcode进行重签名
钥匙串访问 -> 证书助理 -> 创建证书
名称:XcodeSigner
身份类型:自签名根证书
证书类型:代码签名
-
期间允许所有权限
sudo codesign -f -s XcodeSigner /Applications/Xcode.app
Alcatraz
Alcatraz 是一个帮你管理 Xcode 插件、模版以及颜色配置的工具。它可以直接集成到 Xcode 的图形界面中,让你感觉就像在使用 Xcode 自带的功能一样。
安装和删除
使用如下的命令行来安装 Alcatraz:
curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh
修改UUID
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add 'defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID'
如果你不想使用 Alcatraz 了,可以使用如下命令来删除:
rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin
rm -rf ~/Library/Application\ Support/Alcatraz
重启Xcode,选择 load bundles
通过 Alcatraz 安装插件后,重启Xcode不出现 load bundles 提示框,执行“修改UUID”,再重启Xcode。
某些插件无法通过Alcatraz安装,可直接通过github下载打开。