自己擼一個 Android Studio 插件

一、前言

用過 Android Studio 進(jìn)行開發(fā)的人一般都使用過插件,因為使用插件可以大大提高我們的開發(fā)效率。例如我們常用的插件有:

都知道插件很好用,那這些插件是怎么制作的呢?這篇文章就講下怎么制作一個 Android Studio 插件。

二、準(zhǔn)備工作

  1. 首先需要下載開發(fā)工具 IntelliJ IDEA,點擊下載。
  2. 下載后點擊安裝,安裝成功打開界面是這樣的:
  1. 點擊 Create New Project 創(chuàng)建一個新的項目,因為是開發(fā)插件,所以這里選擇 IntelliJ Platform Plugin,然后選擇項目的 SDK,點擊到 “Next” 下一步。具體如下圖所示:
  1. 最后填寫項目名稱,選擇項目的存儲路徑,點擊 “Finish” 即可。具體如下圖所示:
  1. 創(chuàng)建完成項目的結(jié)構(gòu)如下圖所示:

其中 plugin.xml 為插件的一些相關(guān)信息,src 用來存放編寫的代碼。

三、編寫插件

1. 填寫插件相關(guān)信息

插件相關(guān)信息需要在 plugin.xml 文件中填寫,具體如下圖所示:

每個標(biāo)簽的意思為:

  • id:插件 id,需要唯一值
  • name:插件名稱
  • version:插件版本號
  • vendor:插件作者信息
  • description:插件描述
  • change-notes:插件版本更新日志
  • idea-version:對 IntelliJ IDEA 軟件支持本插件版本號,默認(rèn)即可
  • depends:指定你的插件是哪些 IDE 可以使用。
    例如我這里的表示 IntelliJ IDEA 與 Android Studio 可以使用,如果只想在 Android Studio 使用,則寫成 <depends>com.intellij.modules.androidstudio</depends>,具體寫法可參考 Plugin Compatibility with IntelliJ Platform Products
  • extensions:擴(kuò)展,用不到可以不改
  • actions:插件動作,后面創(chuàng)建 Action 的時候會自動配置

這些信息會在搜索該插件的時候展示,例如搜索 GsonFormat :

2. 新建 Action

不能直接在 src 文件夾下新建 Action(原因見文末注意事項),包括后面我們插件的功能代碼也不能直接放在 src 文件夾下,而是在 src 文件夾下新建一個包(方法與 Android Studio 一樣),然后在這個包下新建 Action。即在包上右鍵點擊如下選項:

然后填寫 Action 相關(guān)信息,如下圖所示:

  • Action ID: 代表該 Action 的唯一 ID,一般的格式為:pluginName.ID
  • Class Name:Action 的類名
  • Name:插件在菜單上顯示的名字
  • Description:這個 Action 的描述
  • Groups:指定該插件在 IDE 菜單欄上的位置,如下選擇 EditMenu(Edit)表示該插件在 IDE 菜單欄上的 Edit 處
  • Anchor:指定插件在 Groups 中的哪個選項,F(xiàn)rist 表示在第一個選項
  • Keyboard Shortcuts:使用插件的快捷鍵

點擊 “OK” 后會創(chuàng)建一個剛剛命名的 ShowDialog 類繼承 AnAction 并實現(xiàn) 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 賬號授權(quán)登錄),登錄后選擇 Upload plugin,填寫相關(guān)信息,點擊 Upload 即可上傳。如下圖所示:

  • License:開源許可協(xié)議,我這里選擇 Apache license 2.0
  • Category:插件分類,我這里選擇 Android

出現(xiàn)如下界面表示上傳成功,但只是上傳成功,還需要等審核通過才能在插件庫搜索到。

點擊上圖的鏈接,跳轉(zhuǎn)到插件詳情,點擊編輯可完善插件信息。具體如下圖所示:

如果在 plugin.xml 文件中沒有指定插件是哪些 IDE 可以使用,也可以在這里指定。具體如下:(這種方式我試過審核沒有通過,所以我自己用的是在 plugin.xml 文件中指定的方式

進(jìn)入編輯界面滑到最底部可以看到 Supported products,即支持的產(chǎn)品。這里默認(rèn)是 勾選了 “Determine supported products by dependencies in plugin.xml”,表示根據(jù) plugin.xml 文件中的配置項來確定支持的產(chǎn)品。

這里我們不使用配置 plugin.xml 文件的方式,而是在這里手動選擇。即去掉默認(rèn)勾選,然后選中 Android Studio,表示插件支持在 Android Studio 中使用,其他 3 項 IntelliJ 是默認(rèn)勾選的不用管,最后點擊保存即可。


等審核通過后,我們就可以在插件庫搜索到啦!如下圖所示:

七、注意事項

使用插件出現(xiàn) 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 標(biāo)簽,不能用默認(rèn)的。
    其實這個有點詭異,一般不上傳到插件庫是可以不填的,但是我用平時常用的電腦反復(fù)測試的確是有這個問題,后來換另一部電腦竟然沒有這個問題了~,所以我也不知道是因為環(huán)境還是什么問題,反正你們遇到就跟我一樣解決就可以了。

八、總結(jié)

文章看起來好長好復(fù)雜呀!嗯,那是因為我是良心博主呀,每一步都給你們寫的清清楚楚,還帶截圖!其實按照我的步驟執(zhí)行下去,真的挺簡單的,也就以下幾步:

  1. 下載開發(fā)工具 IntelliJ IDEA 并安裝。
  2. 新建 IntelliJ Platform Plugin 項目,然后編寫插件,即新建 Action。
  3. 生成插件,然后在 Andorid Studio 中安裝即可使用。

插件源碼:ShowDialog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容