目錄
1. 前期準備
Android Studio是基於IntelliJ Platform平臺的,開發插件需要下載IntelliJ IEDA,本文並不介紹開發環境的搭建與配置,開發插件前需要準備如下內容。
- IntelliJ IEDA
- Android Studio
- Java、Kotlin
文章參考資料:官方文檔
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 文件。
可以看到項目中引入了一個插件 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 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顯示效果
點擊運行按鈕,運行插件程序查看效果。
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,並添加一些控件。
此時 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 中安裝插件。