Xcode升级到8.x以上版本后为了提升安全性, 防止XcodeGhost事件的发生, 添加了代码签名机制, 所以我们要使用插件第一步是给Xcode重新签名, 这是Xcode8+最为重要的一步
1.可能在老版本中的插件已经不在支持新版Xcode,为了能够正常使用还是建议使用以下命令全部删除之前的插件重新安装
rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin
rm -rf ~/Library/Application\ Support/Alcatraz/
2.在电脑钥匙串中新建一个代码签名证书 (这一步对于Xcode8+ 十分重要)
3.证书配置完毕 在终端执行命令配置相关信息 "XcodeSigner"字段是你生成证书时名字
sudo codesign -f -s XcodeSigner /Applications/Xcode.app
4.安装最新的Alcatraz插件
curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh
另提供本地安装方法:
下载地址:https://github.com/alcatraz/Alcatraz
官网地址:http://alcatraz.io/
安装成功以后会出现下图
5.安装签名插件 (可能会卡在那里 需要手动回车,然后输入电脑密码执行)
sudo gem install -n /usr/local/bin update_xcode_plugins
6.查看已经安装的插件,并对已经安装的插件全部升级,在步骤1不想全部删除的可以使用这个命名尝试
Added ***************** to Alcatraz(1.2.1) ” 即为把新版Xcode的DVTPlugInCompatibilityUUID加入到每一个插件的Info文件中
7 执行update_xcode_plugins --unsign命令 让Xcode解除签名,只有这样我们才能真正的使用Alcatraz,可能会需要时间,请等待
update_xcode_plugins --unsign
7.1 注意: 可能会卡在那里,需要手动回车并输入Yes 执行以下命令
8 .注意:在使用插件爽完之后记得在打包的使用一定要使用Xcode签名,不然你就嘿嘿嘿~
update_xcode_plugins --restore
9.重新启动Xcode 然后看到弹窗提示选择 load bundle
10.打开Xcode,就看到我们熟悉的Package Manager了
总结:小编遇到一些坑 有一样的同学可以这样尝试
1.在Xcode8+Alcatraz插件的时候 如果没有安装代码证书的时候已经执行了 update_xcode_plugins --unsign 命令,我们在打开Xcode的时候可能会出现死机情况(我的出现了,解决了好久) 解决办法就是先不打开Xcode 先执行update_xcode_plugins --restore 操作 也就是步骤8
2. 执行完步骤8之后,我们尝试执行步骤2,3 这两个是关键,没有执行update_xcode_plugins --restore ,直接执行步骤3的话可能会出现直接输入密码卡死或很久失败情况
2.1.执行完update_xcode_plugins --restore, 在执行步骤3 可能直接是下面视图
3.如果看不到Package Manager的情况可以尝试直接添加UUID到info.plist文件中,查看命令
defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
3.1 到对应的目录路径下面, 找到插件并打开显示包内容并打开info.plist文件
cd /Users/xxxx/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
3.2 直接添加到里面即可
3.3 批量更新插件的 DVTPlugInCompatibilityUUID 的命令(建议使用sudo方式执行)
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth3| xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add`defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`