如何優雅的使用Xcode8或iOS10 SDK

SuperDanny發表於2017-12-13

需求

由於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

相關文章