Bear跟一些朋友開發App一陣子後, 常會覺得Xcode似乎應該要更好
(雖然Xcode 5 一天到晚當掉 + 讓iOS 7 裝置當機的情況不少見...)
想要提高開發速度, 恐怕是得要從工具開始先著手了, 這篇開始Bear實驗室除了介紹Mac App的開發外
也會介紹如何開發Mac上既有程式的外掛喔!
(雖然Xcode 5 一天到晚當掉 + 讓iOS 7 裝置當機的情況不少見...)
想要提高開發速度, 恐怕是得要從工具開始先著手了, 這篇開始Bear實驗室除了介紹Mac App的開發外
也會介紹如何開發Mac上既有程式的外掛喔!
Bear實驗室-如何開發Xcode 5 外掛 一文
第一篇的教學, 我們目標很簡單,
在Xcode最上面一排的Menu上的 "File" 新增一列按鈕, 按下去以後會跳出"Hello World"的字樣
就這麼簡單的目標XD
Bear先假設大家看了上篇文章的教學, 現在就創建一個新的Xcode 5 外掛專案吧!
這次Bear把這個專案名稱命名為SimpleAlertPlugin, 依照以下步驟進行就可以了
注意: 閱讀本篇教學前, 務必先閱讀完 第一篇的教學, 我們目標很簡單,
在Xcode最上面一排的Menu上的 "File" 新增一列按鈕, 按下去以後會跳出"Hello World"的字樣
就這麼簡單的目標XD
Bear先假設大家看了上篇文章的教學, 現在就創建一個新的Xcode 5 外掛專案吧!
這次Bear把這個專案名稱命名為SimpleAlertPlugin, 依照以下步驟進行就可以了
先選擇Xcode5-Plugin的範本, 點選Next進行下一步
好....其實今天的教學只有到這裡...
Bear只是打算給大家看看怎麼新增一個Plugin而已 (被毆飛
不過第一個教學呢, 確實沒打算跟大家說要寫什麼程式碼XD
倒是要跟大家解析一下Xcode的外掛程式是要怎麼運行的,
畢竟因為我們是使用一般的Open Source所封裝的範本, 還是好好理解一下這架構吧!
============================================
回顧分隔線
============================================
傳統上, Xcode 4.x版以前的外掛要開發時, 需要做以下的設定:
Bear只是打算給大家看看怎麼新增一個Plugin而已 (被毆飛
不過第一個教學呢, 確實沒打算跟大家說要寫什麼程式碼XD
倒是要跟大家解析一下Xcode的外掛程式是要怎麼運行的,
畢竟因為我們是使用一般的Open Source所封裝的範本, 還是好好理解一下這架構吧!
============================================
回顧分隔線
============================================
傳統上, Xcode 4.x版以前的外掛要開發時, 需要做以下的設定:
傳統的外掛開發上, 是要在Framework & Library上選擇Bundle為基礎,
之後再Plist的部分進行設定, 而Xcode 5的設定上則需要注意以下幾個數值
之後再Plist的部分進行設定, 而Xcode 5的設定上則需要注意以下幾個數值
其實只要有這三個數值設定, 基礎的外掛開發就算是設定完成了
這邊則是告訴你安裝外掛所在的位置, 參考一下就行了
Build Setting中的Package選項中, Product Name是指外掛的名稱, Wrapper Extension則是外掛的副檔名
理論上大家都完全不需要修改到這邊的設定的
在Xcode 4左右的版本呢, 還需要加上兩個使用者設定參數
另外一個提醒事項, 使用這個範本所建立的外掛, 是使用ARC所建立而成的
要改成MRC的話, 請參考這篇連結
=====================================
回顧歷史結束
=====================================
介紹完這些內容以後, 讓我們真正進入到主題啦!
我們希望能在Xcode開啟的時候, 能有以下畫面的產生
理論上大家都完全不需要修改到這邊的設定的
在Xcode 4左右的版本呢, 還需要加上兩個使用者設定參數
- GCC_ENABLE_OBJC_GC 需要設定為 supported
- GCC_MODEL_TUNING 需要設定為 G5
另外一個提醒事項, 使用這個範本所建立的外掛, 是使用ARC所建立而成的
要改成MRC的話, 請參考這篇連結
=====================================
回顧歷史結束
=====================================
介紹完這些內容以後, 讓我們真正進入到主題啦!
我們希望能在Xcode開啟的時候, 能有以下畫面的產生
按下"Do Action"以後, 跳出一個Hello World 的字樣
那我們來看, 這樣的程式碼是怎麼寫出來的呢?
跟App不同, 在外掛的程式中並沒有所謂的main.m
也沒有AppDelegate的概念, 大家可以想成類似在Linux上開發Package一樣的概念, 就是單純的需要header跟實作檔而已
先看看.h檔的內容吧
那我們來看, 這樣的程式碼是怎麼寫出來的呢?
跟App不同, 在外掛的程式中並沒有所謂的main.m
也沒有AppDelegate的概念, 大家可以想成類似在Linux上開發Package一樣的概念, 就是單純的需要header跟實作檔而已
先看看.h檔的內容吧
很單純吧! 外掛的開發上著重的也就是AppKit跟Foundation framework這兩塊
依照需求才可能加入Cocoa.h的功能, 不過基礎的功能是不需要的!
接下來解析一下實作的方式吧
依照需求才可能加入Cocoa.h的功能, 不過基礎的功能是不需要的!
接下來解析一下實作的方式吧
一個外掛的程式進入點就是從 pluginDidLoad開始的
這邊有寫過iOS Singleton的朋友應該不陌生吧, 沒錯這就是一個Singleton的用法
(不清楚的朋友, Bear後續會在iOS內文中介紹)
也就是說, 對於你的一款App, 也只會有這唯一一款的外掛物件, 那當然就是Singleton囉!!
注意他一開始是先用NSBundle取出目前你要安裝的App名稱,
然後判斷App名稱是Xcode的時候, 才會做初始化的動作
Bear小提醒: 因為範本都幫你做好了, Bear這邊只是在解釋程式碼而已XD
這邊有寫過iOS Singleton的朋友應該不陌生吧, 沒錯這就是一個Singleton的用法
(不清楚的朋友, Bear後續會在iOS內文中介紹)
也就是說, 對於你的一款App, 也只會有這唯一一款的外掛物件, 那當然就是Singleton囉!!
注意他一開始是先用NSBundle取出目前你要安裝的App名稱,
然後判斷App名稱是Xcode的時候, 才會做初始化的動作
Bear小提醒: 因為範本都幫你做好了, Bear這邊只是在解釋程式碼而已XD
先看initWithBundle的部分, 其實這邊只是單純的init, 跟把自身的property指定為本身的外掛bundle
這邊範本很貼心的幫你先完成了NSMenuItem的安插
一開始會先取出App內有沒有名為 "File"的item, 也就是這段程式碼
NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"File"];
如果有的話, 才進行下一步動作,
利用NSMenuItem的API : addItem 可以新增物件到列表上
[[menuItem submenu] addItem:[NSMenuItem separatorItem]];
這一行的意思也就是加入分隔線而已XD
後面一段就是真正加入了一個名為Do Action的item, 他的action就是點下去以後會執行doMenuAction的動作
最後再把它加到畫面列表這樣
再看一下doMenuAction的內容,
NSAlert就可以想成是UIAlertView, runModal就是讓Alert內容給跳出來顯示
詳細的API Bear之後會介紹, 這邊大家就先玩玩看吧!!
到這邊程式碼就介紹完了, 那得談一下, 外掛這東西該怎麼Debug呢?
很遺憾............你是沒辦法做到的
外掛程式只能依照以下步驟進行:
1. 按下 command + b 進行建置(Build)
2. 關閉Xcode
3. 重新啟動Xcode
只能夠透過這樣的方式進行...這樣麻煩的方式, Bear相信這也是為什麼Xcode的外掛會如此稀少的原因之一
不過, 還是有辦法讓我們檢查Xcode進行時候是不是有任何問題的
在Xcode開起來以前, 先在終端機執行這一段command
這邊範本很貼心的幫你先完成了NSMenuItem的安插
一開始會先取出App內有沒有名為 "File"的item, 也就是這段程式碼
NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"File"];
如果有的話, 才進行下一步動作,
利用NSMenuItem的API : addItem 可以新增物件到列表上
[[menuItem submenu] addItem:[NSMenuItem separatorItem]];
這一行的意思也就是加入分隔線而已XD
後面一段就是真正加入了一個名為Do Action的item, 他的action就是點下去以後會執行doMenuAction的動作
最後再把它加到畫面列表這樣
再看一下doMenuAction的內容,
NSAlert就可以想成是UIAlertView, runModal就是讓Alert內容給跳出來顯示
詳細的API Bear之後會介紹, 這邊大家就先玩玩看吧!!
到這邊程式碼就介紹完了, 那得談一下, 外掛這東西該怎麼Debug呢?
很遺憾............你是沒辦法做到的
外掛程式只能依照以下步驟進行:
1. 按下 command + b 進行建置(Build)
2. 關閉Xcode
3. 重新啟動Xcode
只能夠透過這樣的方式進行...這樣麻煩的方式, Bear相信這也是為什麼Xcode的外掛會如此稀少的原因之一
不過, 還是有辦法讓我們檢查Xcode進行時候是不是有任何問題的
在Xcode開起來以前, 先在終端機執行這一段command
執行後不要關閉終端機, 接下來再點開你的Xcode就行了,
如果遇到一些錯誤的話, 終端機會告訴你發生什麼錯誤,
例如以下畫面
如果遇到一些錯誤的話, 終端機會告訴你發生什麼錯誤,
例如以下畫面
如果建制出來的外掛有錯誤該怎麼辦呢?
那就該到安裝好的資料夾把裝好的外掛檔案給刪除, 重新執行Xcode後就沒問題了
由於這樣的步驟太過麻煩, Bear寫好了一份shell script, 大家直接使用後就行囉!
那就該到安裝好的資料夾把裝好的外掛檔案給刪除, 重新執行Xcode後就沒問題了
由於這樣的步驟太過麻煩, Bear寫好了一份shell script, 大家直接使用後就行囉!
Bear把這個script命名為pluginbuild.sh, 執行以後會先列出你目前有的外掛
在輸入你要刪除的外掛名稱後, 就會幫你刪除掉那個外掛了
執行的畫面可以參考下圖內容
在輸入你要刪除的外掛名稱後, 就會幫你刪除掉那個外掛了
執行的畫面可以參考下圖內容
呼, 到這邊總算大功告成了!!!
有興趣的朋友, 可以到以下連結把Script跟這次的專案一起下載下來噢!
https://github.com/TakoBear/XcodeSimpleAlertDemo.git
喜歡這篇文章嗎? 有任何問題歡迎與我們聯繫噢!!
趕快加入Takobear粉絲團獲得更多最新消息吧!
有興趣的朋友, 可以到以下連結把Script跟這次的專案一起下載下來噢!
https://github.com/TakoBear/XcodeSimpleAlertDemo.git
喜歡這篇文章嗎? 有任何問題歡迎與我們聯繫噢!!
趕快加入Takobear粉絲團獲得更多最新消息吧!