20160928
Xcode 8
的确更加安全了, 但是代价就是所有插件都用不了了, 因此,插件管理器Alcatraz
的文档更新后, 明确说明了只支持Xcode 7。 下面是我在网上找到的解决办法,思路是安装两个Xcode,一个用来开发,方便使用各种插件;一个用来打包,目的是安全。
方法1(推荐):
1.安装
update_xcode_plugins
过程中, 如果使用的是系统的Ruby, 并且Mac OS版本>=10.11, 那么update_xcode_plugins
作者提供的安装方法(sudo gem install update_xcode_plugins
)将会无效, 这和在Mac OS 10.11中安装CocoaPods
遇到的问题一样, 解决办法是使用sudo gem install -n /usr/local/bin update_xcode_plugins
命令.2.成功安装之后, 在终端运行
update_xcode_plugins
命令, 这个命令包含了下面命令的效果:
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.plist DVTPlugInCompatibilityUUID`
运行结果如下:
- 3.生成Xcode-unsigned
运行成功后会发现应用程序
文件夹多了一份Xcode拷贝:
之后, 在开发过程中使用Xcode-unsigned, 打包发布就用原版Xcode, 或者交给服务器打包, 一定要保证打包所用的Xcode是官方原版.
4.注意:
- 4.1.如果Xcode或者插件有更新, 为了使插件不失效, 以前的做法是终端运行:
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.plist DVTPlugInCompatibilityUUID`
-
- 4.2.Xcode的默认版本将会是
Xcode-unsigned
,估计是update_xcode_plugins
这条命令包含了sudo xcode-select -s /Applications/Xcode-unsigned.app/Contents/Developer
,因此修改了默认的Xcode开发路径, 所以此时要把find ...
这一串中Xcode.app
改成Xcode-unsigned.app
, 改完之后就是下面这一串:
- 4.2.Xcode的默认版本将会是
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-unsigned.app/Contents/Info.plist DVTPlugInCompatibilityUUID`
-
- 4.3.或者, 更简单的方法, 直接终端运行
update_xcode_plugins
命令, 效果一样.
- 4.3.或者, 更简单的方法, 直接终端运行
-
- 4.4.如果要卸载Xcode-unsigned.app,记得将重新把开发路径置回初始状态。
-
- 4.5. 目前发现有些插件会引起Xcode-unsigned无限奔溃,比如ZLGotoSandBox,解决办法是用Alcatraz删除或者手动去~/Library/Application\ Support/Developer/Shared目录删除。
方法2
由于这个办法比较麻烦,而我认为工具就应该简单易用,所以这里只贴一个链接:
http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm_source=tuicool&utm_medium=referral