Android Studio 插件開發入門

1. 前期準備

Android Studio是基於IntelliJ Platform平臺的,開發插件需要下載IntelliJ IEDA,本文並不介紹開發環境的搭建與配置,開發插件前需要準備如下內容。

文章參考資料:官方文檔

2. 創建項目

2.1 步驟

File -> New -> Project -> Gradle -> 選擇支持內容 -> Next -> 填寫項目信息 -> Finish

插件項目創建
填寫項目信息

2.1 可能出現的問題

可能會出現 Java heap space 的錯誤,程序超過了JVM堆設置的最大值。

A problem occurred configuring root project 'xxx'.
> A build operation failed.
      Java heap space
   > Java heap space

解決方式

在Project 的 gradle.properties文件中添加代碼

org.gradle.jvmargs=-Xmx4096m
  • -Xms:初始值
  • -Xmx:最大值
  • -Xmn:最小值

3. 項目文件介紹

3.1 plugin.xml

~/src/main/resources/META-INF/plugin.xml 是插件的配置文件。
插件項目結構

官方介紹
Plugin Configuration File - plugin.xml

標籤的含義

  • < id >:插件ID,唯一標誌。
  • < name >:插件名稱。
  • < vendor >:插件發佈者的相關信息。
  • < description >:插件的描述內容。
  • < depends >:添加其它插件或模塊的依賴。
  • < extensions >:註冊插件擴展。
  • < actions >:註冊插件操作動作,查看4.1。

2.2 build.gradle

由於是採用Gradle構建的項目,所以此插件項目中也有 build.gradle 文件。

build.gradle
可以看到項目中引入了一個插件 gradle-intellij-plugin,是用於構建 IntelliJ IDEA插件的插件。

4. 開始開發

4.1 Action 動作

插件可以通過註冊Action 在IDE菜單和工具欄中添加操作,其實就是IDE中添加了一個按鈕,然後響應按鈕點擊事件。例如Android Studio中的Build - Clean Project 按鈕就是一個Action。

4.1.1 自定義Action

main 文件夾下新建kotlin文件夾(若採用java開發,則創建java文件夾),創建ADBAction類。

class ADBAction : AnAction() {
    //用戶執行操作時會調用此方法。
    override fun actionPerformed(e: AnActionEvent) {
        //展示一個信息彈窗
        Messages.showMessageDialog("adb message", "adb title", Messages.getInformationIcon() )
    }
}

4.1.2 註冊自定義Action

鼠標選中在自定義Action類,使用快捷鍵ALT + Enter(快捷鍵可能有所不同)註冊Action。

快捷鍵註冊Action
快捷鍵註冊Action

  • Action ID :Action 唯一標誌
  • Class Name:Action對應的類名.
  • Name :顯示名稱
  • Description:對Action的描述
  • Add to Group:選擇添加到哪個組裏面
  • Anchor:指定放置位置

完成後可以看到 plugin.xml文件,< actions > 標籤下多瞭如下內容

    <actions>
        <action id="ADBAction" class="ADBAction" text="ADB Action" description="ADB action">
            <add-to-group group-id="ToolsMenu" anchor="last"/>
            <keyboard-shortcut keymap="$default" first-keystroke="alt 1" second-keystroke="alt 2"/>
        </action>
    </actions>

4.1.3 Action顯示效果

點擊運行按鈕,運行插件程序查看效果。

Action運行效果
Action運行效果

4.2 自定義顯示界面

4.2.1 自定義DialogWrapper

上文中的對話框爲自帶的Dialog樣式,如果需要修改顯示畫面,就需要進行自定義。
kotlin文件夾下,新建MessageDialog 繼承於DialogWrapper

class MessageDialog : DialogWrapper(true) {
    override fun createCenterPanel(): JComponent {
        TODO("Not yet implemented")
    }
}

可以看到,需要返回一個 JComponent 對象,插件的顯示界面就是由Java Swing開發。

4.2.2 編寫Swing GUI

main 文件夾下新建java文件夾,然後右鍵 New -> Swing UI Designer -> GUI Form,新建MyMessageDialog,並添加一些控件。

swing GUI
此時 MyMessageDialog.java 中的代碼如下

public class MyMessageDialog {
    public JTextField textField1;
    public JTextField textField2;
    public JPanel root;
}

4.2.3 完成自定義顯示界面

修改 MessageDialog.kt 中的代碼。

class MessageDialog(
    private val text1: String,
    private val text2: String
) : DialogWrapper(true) {
    init {
        //Dialog的一些初始化操作
        init()
    }

    override fun createCenterPanel(): JComponent {
        return MyMessageDialog().apply {
            //修改UI佈局內容
            textField1.text = text1
            textField2.text = text2
        }.root
    }
}

ADBAction 中修改調用方式

class ADBAction : AnAction() {
    //用戶執行操作時會調用此方法。
    override fun actionPerformed(e: AnActionEvent) {
        //展示一個自定義對話框
        MessageDialog("adb message", "adb title").show()
    }
}

顯示效果

自定義界面顯示效果

5. 導出插件

正式發佈可查看官方文檔:使用Gradle發佈插件
如果只是單純的想導出插件,可以進行如下操作

gradlew buildPlugin

/build/distributions 中可查看到插件.zip文件,然後在 Android Studio -> File -> Setting -> Plugins -> Install Plugin from Disk 中安裝插件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章