工具篇---xcode外掛使用
原理
在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外掛: 編碼效率神器 FlyCodingXCode
- Headshot外掛如何使用?Headshot外掛使用教程
- 工具最佳化篇之IDEA新UI+日常外掛IdeaUI
- Android外掛化開篇Android
- HtmlWebpackPlugin外掛和HtmlWebpackInlineSourcePlugin外掛的使用HTMLWebPlugininline
- fastadmin的【外掛管理】外掛使用教程AST
- videojs外掛使用IDEJS
- Head 外掛使用
- Flutter外掛開發---iOS篇FlutteriOS
- Flutter外掛開發---Android篇FlutterAndroid
- Eclipse安裝lombok外掛及外掛使用案例EclipseLombok
- [-Flutter外掛篇 1-] 從自定義外掛開始說起Flutter
- 使用 VSCode Remote 外掛VSCodeREM
- burp外掛的使用
- vscode外掛使用包VSCode
- IDEA使用lombok外掛IdeaLombok
- 急速 debug 實戰三(Node - webpack外掛,babel外掛,vue原始碼篇)WebBabelVue原始碼
- Python開發工具:VSCode+外掛PythonVSCode
- Chrome外掛:切圖壓縮工具Chrome
- 用Kotlin擼一個圖片壓縮外掛-外掛基礎篇(二)Kotlin
- apisix~限流外掛的使用API
- flask 外掛使用方法Flask
- Androidstudio adb wifi外掛使用AndroidWiFi
- Vue-router外掛使用Vue
- 使用podspec建立iOS外掛iOS
- Windows下使用ideagit外掛WindowsIdeaGit
- IDEA的Docker外掛實戰(Dockerfile篇)IdeaDocker
- [-Flutter外掛篇 2-] 認識MethodChannelFlutter
- BurpSuite外掛開發指南之 Python 篇UIPython
- BurpSuite外掛開發指南之 Java 篇UIJava
- Android外掛化技術之旅 1 開篇 - 實現啟動外掛與呼叫外掛中的Activity和ServiceAndroid
- 前端常用外掛、工具類庫彙總前端
- Android dp方式的螢幕適配工具使用(Android Studio外掛方式)Android
- IDEA的Docker外掛實戰(Docker Image篇)IdeaDocker
- 【AST篇】教你如何動手寫 Eslint 外掛ASTEsLint
- 我的Android重構之旅:外掛化篇Android
- [需求建議]外掛外部url控制器直接使用外掛配置
- IntelliJ IDEA 外掛Rest Client 外掛使用過程遇到的問題IntelliJIdeaRESTclient