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插件的插件。可以通过该插件,对我们开发的插件进行一些配置。

intellij {
    // 对应的IDEA版本号
    version '2019.1'
}
runIde {
    // 默认运行插件是启动IntelliJ IDEA,如果想直接启动Android Studio 指定运行的ide路径。
    // windows
    ideDirectory 'C:/Program Files/Android/Android Studio'
//    // macOS
//    ideDirectory '/Applications/Android Studio.app/Contents'
}

IntelliJ IDEA 版本号:IntelliJ IDEA Build Number Ranges
Android Studio对应的 IDEA版本号:mac 在 Android Studio About中查看,windows 在 help/about中查看。
更多配置信息请查看: gradle-intellij-plugin

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 message1", "adb message2").show()
    }
}

显示效果

自定义界面显示效果

4.2.4 问题点解决

运行时发现,运行在 IntelliJ IDEA 中时插件可以正常运行,但运行在Android Studio 中时,出现如下错误。

java.lang.NullPointerException
com.android.tools.idea.diagnostics.AndroidStudioSystemHealthMonitor.getActionName()

解决方式,类不能直接放在 java 或 kotlin 包下,还得自己在新建一个包,最终文件结构如下。
项目文件结构

5. 导出插件

正式发布可查看官方文档:使用Gradle发布插件
如果只是单纯的想导出插件,可以进行如下操作

gradlew buildPlugin

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

从磁盘安装插件

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio插件开发是一种扩展Android Studio功能的方式,可以提升开发效率和使用体验。首先,你需要下载开发工具,官方文档提供了详细的开发指南\[1\]。接下来,你可以按照以下步骤进行插件的安装和开发: 1. 打开Android Studio,点击Android Studio → Preferences(或者File → Settings)。 2. 在Preferences窗口中,选择Plugins选项。 3. 点击"Install plugin from disk..."按钮。 4. 选择你刚刚生成的插件的jar包文件。 5. 点击Apply按钮,然后点击OK按钮。 6. 重启Android Studio使插件生效\[2\]。 一旦你完成了插件的安装,你就可以开始开发自己的插件了。Android Studio提供了丰富的API和工具,可以帮助你实现各种功能。你可以根据自己的需求,使用Java或Kotlin编写插件代码,并通过UI交互提供更好的用户体验。 在开发插件之前,你可以参考一些已有的优秀插件,比如AndroidButterKnife Zelezny、GsonFormat、AndroidCode Generator等等\[3\]。这些插件可以给你提供一些灵感和参考,帮助你更好地理解插件开发的流程和技巧。 希望以上信息对你有所帮助,祝你在Android Studio插件开发的道路上取得成功! #### 引用[.reference_title] - *1* *2* [Android Studio 插件开发](https://blog.csdn.net/AlpinistWang/article/details/88703593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [Android Studio 插件开发入门](https://blog.csdn.net/tmacfrank/article/details/126284750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值