工具篇---xcode外掛使用

weixin_33866037發表於2018-11-01

原理

在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下載開啟。

參考連結

Xcode plugins 開發

Xcode奇淫巧技(三)——Xcode 8 外掛

使用Alcatraz來管理Xcode外掛

相關文章