天天看點

Xcode7 插件制作入門

我們平時也使用了很多的xcode插件,雖然官方對于插件制作沒有提供任何支援,但是加載三方的插件,預設還是被允許的.第三方的插件,需要存放在 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins檔案夾中,字尾名必須是.xcplugin (不過其實際上是一種bundle).

是以我們建立一個插件工程,直接建立bundle工程即可,然後通過修改字尾名為.xcplugin,将其放到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目錄中就可以了

建立Bundle工程 TestPluginBundle

工程名稱就是 TestPluginBundle

插件工程和普通的bundle工程還是有差別的,是以需要進行特殊的設定

添加 三項

XCPluginHasUI = NO

XC4Compatible = YES

DVTPlugInCompatibilityUUIDs 這是一個數組.數組内容字元串,訓示了該插件相容的xcode版本,隻有對應版本的xcode的UIID加入這個數組了,插件才能被加載,否則,即使你将插件放入xcode的插件檔案夾,插件也不會被加載的

那麼怎麼擷取你目前版本的xcode的UUID呢?在terminal中輸入 defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID ,terminal會傳回一串字元串給你,這就是你的Xcode的DVTPlugInCompatibilityUUID.

Installation Build Products Location 設定為 ${HOME} [顯示的時候,顯示的是你的使用者目錄],這個是products的根目錄

Installation Directory 設定為 /Library/Application Support/Developer/Shared/Xcode/Plug-ins,這個是指定你的插件安裝的目錄. 注意,這裡填入的其實是相對目錄,插件的絕對目錄是這樣的,例如 /Users/yohunl/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin ,最後的絕對目錄是 Installation Build Products

Location和Installation Directory的結合,這也是為什麼兩者都要設定的原因

Deployment Location 設定為 YES,這個是訓示該工程不使用設定裡的build location,而是用Installation Directory來确定build後放哪兒

我們預設工程生成的相關檔案放在哪.都是 Build Locations訓示的,通過Deployment Location 設定為 YES告訴工程,我們不使用這個預設的設定,而是我們自定義的

Wrapper extension 設定為 xcplugin,字尾名必須為xcplugin,否則不會被加載

在工程中添加一個檔案 ,名稱為 TestPluginBundle (當然,名字随便什麼都可以),在其中添加代碼

ctrl+B來Build工程,檢視路徑下/Library/Application Support/Developer/Shared/Xcode/Plug-ins,可以看到我們的插件TestPluginBundle.xcplugin存在了,接下來,重新開機xcode

點選 測試菜單

可能你 會說,這樣雖然是起作用了,但是,難道開發一個插件工程,沒打單步調試麼???,當然不是啊

編輯工程的scheme,将Executable設定為Xcode.app,意思是工程調試的時候挂載到xcode中

将Options下面的Core Location,XPC Services,View Debugging前面的勾都去掉,否則,你調試的時候,可能會直接crash

當設定完後,你的工程的scheme的圖示會從bundle圖示變為xcode的圖示

再運作(這裡是運作了,不是編譯了)

不出意外的話,會出現xode啟動另外一個xcode,接下來和你普通的調試工程就是一樣的了!

說了這麼多,其實隻是想讓你明白一個插件的初始化的配置,調試等

Xcode Plugin模闆,使用這個模闆建立一個新工程,以上的配置等,就都設定好了,直接運作就是一個demo了.

<a target="_blank" href="http://www.cocoachina.com/ios/20150506/11765.html">Xcode 6 插件開發入門:添加自己的想法和功能</a>