如何优雅的使用Xcode8或iOS10 SDK

字数 900阅读 1329

需求

由于Xcode8 不再支持第三方插件,对于大部分开发者来说是一个噩耗!我也不例外,为了能够找到解决方案,我出去外面查阅了很多资料,总的来说有两种方案,一种是重签名Xcode8,另外一种是变相使用Xcode7.3.1运行iOS10 SDK。目前我采用的是方案二。

方案一:重签名Xcode8

本方案转载至Vong

  1. 编译 MakeXcodeGr8Again 并且导出其 product (关于 MakeXcodeGr8Again,下文会详细说到)。
  2. 退出 Xcode8,同时运行刚刚导出的 MakeXcodeGr8Again,将 Xcode8 拖入其中,等待一段时间(3~10分钟)。
  3. 等菊花转完后,应用程序文件夹下会生成一个 XcodeGr8 的应用,运行命令 sudo xcode-select -s /Applications/XcodeGr8.app/Contents/Developer 将 Xcode 开发路径指向刚生成的 XcodeGr8。
  4. 既然 Xcode8 的签名已被移除,那么就可以继续使用上面的修复插件失效代码。但是上面的脚本要稍微改一下就是把 Xcode.app 换成 XcodeGr8.app 即可。代码如下:
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/XcodeGr8.app/Contents/Info.plist DVTPlugInCompatibilityUUID`

下面我们来看下步骤1提到的 MakeXcodeGr8Again,其 ReadMe 也有对应的介绍。这里大概摘录一下:

苹果为了避免类似 Xcode Ghost 👻 事件的再次发生,Xcode8 禁用了插件机制,而开放了另一种形式:Source Editor extensions,但是这种形式局限性太大。MakeXcodeGr8Again 只是去除了它的签名,这样使得 Xcode8 也可以继续使用插件了。由于签名被移除,所以它的安全性又重回 Xcode7 时代,也就是还有可能受到类似 Xcode Ghost 的攻击。所以不推荐用 XcodeGr8 来提交应用到 Appstore。Use at your own risk.

可能遇到的问题

  1. 生成了 XcodeGr8 之后,打不开。 解决方法:重启。
  2. 如果之前对其它版本的 Xcode-beat 也有使用这种方式,再对 Xcode8 GM 也是用该方式可能 MakeXcodeGr8Again 这个 APP 会一直闪退。 解决方法:卸载之前生成的 XcodeGr8,再重试。卸载后记得将开发路径重新指回原来的路径,即 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer。如果这种方式还不行,卸载所有版本的 Xcode,然后再安装 GM 版,重复上述步骤。
  3. 如果要卸载 XcodeGr8,记得将重新开发路径置回初始状态。

最后,重要的事情说三遍:
不要使用 XcodeGr8 打包上传 Appstore,最好使用服务器打包,保证服务器 Xcode 是 Appstore 下载的!!!
不要使用 XcodeGr8 打包上传 Appstore,最好使用服务器打包,保证服务器 Xcode 是 Appstore 下载的!!!
不要使用 XcodeGr8 打包上传 Appstore,最好使用服务器打包,保证服务器 Xcode 是 Appstore 下载的!!!

方案二:在Xcode7.3.1中使用iOS10 SDK

本方案来至how-use-xcode-7-with-ios-10

文章的意思就是将Xcode8的iOS10 SDK拷贝到Xcode7上面,然后再创建一个软链接即可。

You need use DeveloperDiskImage from Xcode 8. For this extract Xcode 8 app and copy DeveloperDiskImage for iOS 10 to your Xcode folder.

Suppose you extract Xcode to /Applications/Xcode8.app

cp -r /Applications/Xcode8.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0\ \(14A345\) /Applications/Xcode7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

After copy DeveloperDiskImage you should start Xcode and connect iOS device to your mac.

Edit:
With a standard Xcode install one can create a soft link:

sudo ln -s \
/Applications/Xcode8.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0\ \(14A345\) \
/Applications/Xcode7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0

再一次感谢您花费时间阅读这篇文章!

微博: @Danny_吕昌辉
博客: SuperDanny

推荐阅读更多精彩内容