自己擼一個 Android Studio 外掛
一、前言
用過 Android Studio 進行開發的人一般都使用過外掛,因為使用外掛可以大大提高我們的開發效率。例如我們常用的外掛有:
- GsonFormat :將 json 資料轉換成實體類。
- Android Butterknife Zelezny :一鍵生成 ButterKnife 註解。
都知道外掛很好用,那這些外掛是怎麼製作的呢?這篇文章就講下怎麼製作一個 Android Studio 外掛。
二、準備工作
- 首先需要下載開發工具 IntelliJ IDEA,點選下載。
- 下載後點擊安裝,安裝成功開啟介面是這樣的:

- 點選 Create New Project 建立一個新的專案,因為是開發外掛,所以這裡選擇 IntelliJ Platform Plugin,然後選擇專案的 SDK,點選到 “Next” 下一步。具體如下圖所示:

- 最後填寫專案名稱,選擇專案的儲存路徑,點選 “Finish” 即可。具體如下圖所示:

- 建立完成專案的結構如下圖所示:

其中 plugin.xml 為外掛的一些相關資訊,src 用來存放編寫的程式碼。
三、編寫外掛
1. 填寫外掛相關資訊
外掛相關資訊需要在 plugin.xml 檔案中填寫,具體如下圖所示:

每個標籤的意思為:
- id:外掛 id,需要唯一值
- name:外掛名稱
- version:外掛版本號
- vendor:外掛作者資訊
- description:外掛描述
- change-notes:外掛版本更新日誌
- idea-version:對 IntelliJ IDEA 軟體支援本外掛版本號,預設即可
- extensions:擴充套件,用不到可以不改
- actions:外掛動作,後面建立 Action 的時候會自動配置
這些資訊會在搜尋該外掛的時候展示,例如搜尋 GsonFormat :

2. 新建 Action
不能直接在 src 資料夾下新建 Action(原因見文末注意事項),包括後面我們外掛的功能程式碼也不能直接放在 src 資料夾下,而是在 src 資料夾下新建一個包(方法與 Android Studio 一樣),然後在這個包下新建 Action。即在包上右鍵點選如下選項:

然後填寫 Action 相關資訊,如下圖所示:

- Action ID: 代表該 Action 的唯一 ID,一般的格式為:pluginName.ID
- Class Name:Action 的類名
- Name:外掛在選單上顯示的名字
- Description:這個 Action 的描述
- Groups:指定該外掛在 IDE 選單欄上的位置,如下選擇 EditMenu(Edit)表示該外掛在 IDE 選單欄上的 Edit 處
- Anchor:指定外掛在 Groups 中的哪個選項,Frist 表示在第一個選項
- Keyboard Shortcuts:使用外掛的快捷鍵
點選 “OK” 後會建立一個剛剛命名的 ShowDialog 類繼承 AnAction 並實現 actionPerformed 方法,而且在 plugin.xml 檔案中會自動配置我們剛剛填寫的 Action 資訊。如下圖所示:

3. 編寫 Action
我們仿照官方例子,在 actionPerformed 方法中新增如下程式碼,表示點選外掛的時候彈出一個dialog
public class ShowDialogAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { Project project = e.getData(PlatformDataKeys.PROJECT); String txt= Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon()); Messages.showMessageDialog(project, "Hello, " + txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon()); } }
4. 使用外掛
Action 程式碼完成後,點選 Run Plugin 執行專案,會自動啟動一個新的 IntelliJ IDEA 專案,在這個專案中就可以使用我們剛剛製作的外掛了。如下圖所示:



四、生成外掛
點選選單欄上的 Build -> Prepare Plugin Module 'xxx' For Deployment 即可,如下圖所示:

執行完成會在專案的根目錄生成一個 xxx.jar 的檔案,這個就是最終生成的外掛檔案,如下圖所示:

五、安裝外掛
開啟 Andorid Studio,點選選單欄上的 File -> Settings -> Plugins -> Install plugin from disk,然後選擇我們剛剛生成的 jar 檔案,如下圖所示:

然後點選 “OK”,重啟 Andorid Studio 後即可像上面那樣使用外掛。
六、上傳外掛
前面生成的外掛只能從本地選擇安裝,要想從外掛庫直接下載安裝則需要將外掛上傳到外掛庫- JetBrains Plugins Repository ,開啟外掛庫,註冊賬號(這裡可直接使用 Github 賬號授權登入),登入後選擇 Upload plugin,填寫相關資訊,點選 Upload 即可上傳。如下圖所示:

- License:開源許可協議,我這裡選擇 Apache license 2.0
- Category:外掛分類,我這裡選擇 Android
出現如下介面表示上傳成功,但只是上傳成功,還需要等稽核通過才能在外掛庫搜尋到。

點選上圖的連結,跳轉到外掛詳情,點選編輯可完善外掛資訊,例如完善外掛支援的 IDE,具體如下圖所示:

進入編輯介面滑到最底部可以看到 Supported products,即支援的產品。這裡預設是 勾選了 “Determine supported products by dependencies in plugin.xml”,表示根據 plugin.xml 檔案中的配置項來確定支援的產品,比較麻煩。

這裡我們不使用配置 plugin.xml 檔案的方式,而是在這裡手動選擇。即去掉預設勾選,然後選中 Android Studio,表示外掛支援在 Android Studio 中使用,其他 3 項 IntelliJ 是預設勾選的不用管,最後點選儲存即可。

等稽核通過後,我們就可以在外掛庫搜尋到啦!如下圖所示:

咦。。。好像沒找到!嗯,因為我上傳的還沒通過稽核~~
七、注意事項
使用外掛出現 NullPointerException
- 問題
寫好外掛,然後使用 Android Studio 安裝外掛並使用,提示
java.lang.NullPointerException at com.android.tools.idea.diagnostics.AndroidStudioSystemHealthMonitor.getActionName - 解決
也就是前面 “2. 新建 Action” 那裡說的,需要將所有的 Action 及其他 Java 檔案都放到包下,而不是直接放在 src 目錄下。
在選單欄上找不到外掛
- 問題
寫完 Action,然後點選 Run Plugin 執行專案後在選單欄上找不到外掛。 - 解決
在執行專案前需要填寫 plugin.xml 檔案中的 id 與 name 標籤,不能用預設的。
其實這個有點詭異,一般不上傳到外掛庫是可以不填的,但是我用平時常用的電腦反覆測試的確是有這個問題,後來換另一部電腦竟然沒有這個問題了~,所以我也不知道是因為環境還是什麼問題,反正你們遇到就跟我一樣解決就可以了。
八、總結
文章看起來好長好複雜呀!嗯,那是因為我是良心博主呀,每一步都給你們寫的清清楚楚,還帶截圖!其實按照我的步驟執行下去,真的挺簡單的,也就以下幾步:
- 下載開發工具 IntelliJ IDEA 並安裝。
- 新建 IntelliJ Platform Plugin 專案,然後編寫外掛,即新建 Action。
- 生成外掛,然後在 Andorid Studio 中安裝即可使用。
外掛原始碼: ShowDialog