Android Studio Plugin —— 插件开发的基本流程

前言

本篇文章将讲解如何通过 IntelliJ IDEA 工具来编写自定义插件,熟悉插件开发的流程,以及如何打包发布插件的流程。

一、配置SDK

打开 IntelliJ IDEA ,选择 File -> Project Structure,在弹出的配置窗口中点击 New... 新增SDK,然后选择 IntelliJ Platform Plugin SDK。如下图所示:

在弹出下面的对话框时,选择默认 IntelliJ IDEA 文件夹即可,然后点击OK,如下图所示:

最后会弹出选择插件的 Java 版本的窗口,选择默认配置即可,然后点击OK,如下图所示:

 

二、新建 Plugin Project

在打开的 IntelliJ IDEA 中选择 File -> New -> Project,在弹出的 New Project 窗口的左侧菜单选择 IntelliJ Platform Plugin 项目,Project SDK 选择刚才新建的配置,其中 Groovy、Scala等其他附加的内容无需勾选,然后选择 Next , 如下图所示:

输入项目名称和选择项目存放位置即可,点击 Finish 完成创建,如下图所示:

创建完插件项目之后,会默认生成一个 plugin.xml 的配置文件,其中可以修改该插件项目的相关配置信息,比如插件名称、插件版本号等,代码如下所示:

<idea-plugin>
  <id>com.your.company.unique.plugin.id</id>
  <name>Plugin display name here</name>
  <version>1.0</version>
  <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>
​
  <description><![CDATA[
      Enter short description for your plugin here.<br>
      <em>most HTML tags may be used</em>
    ]]></description>
​
  <change-notes><![CDATA[
      Add change notes here.<br>
      <em>most HTML tags may be used</em>
    ]]>
  </change-notes>
​
  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
  <idea-version since-build="173.0"/>
​
  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
       on how to target different products -->
  <!-- uncomment to enable plugin in all products
  <depends>com.intellij.modules.lang</depends>
  -->
​
  <extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
  </extensions>
​
  <actions>
    <!-- Add your actions here -->
  </actions>
​
</idea-plugin>

各个标签的具体含义如下:

1. <id> 插件id,类似于 Android 项目的包名,不能和其他插件项目重复,所以推荐使用 com.xxx.yyy 的格式。

2. <name> 插件名称,别人在官方插件市场搜索你的插件时使用的名称。

3. <version> 插件版本号。

4. <vendor> 插件发布者信息,可以添加邮箱链接。

5. <description> 插件描述信息,在这里可以介绍你的插件内容,支持HTML标签

6. <change-notes> 插件版本变更日志,支持HTML标签

7. <idea-version> 对 IntelliJ IDEA 软件支持本插件版本号, 分为 since-build 最低版本和 until-build 最高版本,两个属性可以任选一或者同时使用,官网有详细介绍 http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html 大体规则为 since-build <= 支持版本 < until-build

8. <extensions> 自定义扩展,暂时用不到。

9. <actions> 具体的插件动作,后面会介绍。

plugin.xml 中填写的配置信息,会在别人在插件库中搜索你的插件的时候展现出来。

 

三、编写插件代码

项目创建好时有一个 src 文件夹,在这个文件夹下写插件的主要代码,主要有以下几种针对插件的特殊文件类型:

  1. GUI Form:表单界面。

  2. Dialog:对话框。

  3. XXXComponent:作用域,其中有分为 Application、Project、Module 分别作用于不同的范围。

  4. Action:处理插件交互行为。

其中最主要的是 Action 类,当我们使用 Android Studio 生成类的 getter 和 setter 方法是也是使用的插件,而生成 getter 和 setter 方法的功能是在菜单栏中的 Code -> Generate -> Getter and Setter选择的。

那么我们自己创建的插件选项在哪里呢?属于哪个菜单呢?

这里在创建 Action 类的时候就可以指定操作入口,Action 的创建的对话框如下图所示:

然后在弹出的 New Action 界面配置 Action 相关的信息,如下图所示:

1. Action ID: 动作 ID,推荐用“插件名.XXAction”的格式。

2. Class Name:编写 Action 的类文件名。

3. Name:动作在菜单选项中展示的名字。

4. Description:Action 描述。

5. Groups:定义这个动作选项所属的组,比如 EditMenu 就对应 IDE 菜单栏上的 Edit,CodeMenu 就对应菜单栏上的 Code 。

6. Actions:是当前选中 Groups 下已有的 Action 动作,比如上图示如果我们选择 CodeMenu 就会展示 Code 中已有的几个选项 。

7. Anchor:用来指定动作选项在 Groups 中的位置,Frist 就是最上面、Last 是最下面,也可以设在某个选项的上/下方。

8. Keyboard Shortcuts:调用插件Action的快捷键,可以不填,要注意热键冲突。

创建好 Action 后,会自动在 plugin.xml 配置文件的 actions 标签中新增一个对应的 Action 动作信息,代码如下所示:

<actions>
    <!-- Add your actions here -->
    <action id="DatabaseGenerator.GeneratorAction" class="DatabaseGeneratorAction" text="Datebase Generator"
            description="auto generator database code.">
        <add-to-group group-id="CodeMenu" anchor="last"/>
    </action>
</actions>

注意:

  1. 这里的信息我们都可以再次修改,但是 class name 修改时要注意和类文件名匹配。

  2. <add-to-group group-id> 可以修改添加多个,即在不同菜单中都可以选择使用。

  3. 同一个 group 下多个 action 的 id 不能重复。

创建好的 Action 类会默认继承抽象类 AnAction,然后实现 actionPerformed 抽象方法,在方法中添加如下代码,让点击这个 Action 的时候弹出一个输入框,代码如下所示:

public class DatabaseGeneratorAction extends AnAction {
​
    @Override
    public void actionPerformed(AnActionEvent e) {
        Project project = e.getData(PlatformDataKeys.PROJECT);
        String text = Messages.showInputDialog(project,
                "Please enter the user name.",
                "Title",
                Messages.getQuestionIcon());
        Messages.showMessageDialog(project,
                "What you have entered is:" + text,
                "Information",
                Messages.getInformationIcon());
    }
}

写好代码后,run 运行项目,此时会自动启动一个新的 IntelliJ IDEA 项目,新运行起来的 IntelliJ IDEA 中就可以看到菜单栏里的 Code 最底部就出现了一个 Database Generator 选项,如下图所示:

点击 " Database Generator" 就会触发我们编写的功能,如下图所示:

为了更加方法的找到插件我们插件的入口,也可以在根目录上新建一个和 Code、Edit 等同级别的 Group ,需要在配置文件里新建一个group,然后<add-to-group>指定其添加到 MainMenu 主菜单上,代码如下所示:

<actions>
    <!-- Add your actions here -->
    <group id="Plugin.PluginSet" text="Database" description="group desc">
        <add-to-group group-id="MainMenu" anchor="last"/>
        <action id="DatabaseGenerator.GeneratorAction" class="DatabaseGeneratorAction" text="Datebase Generator"
                description="auto generator database code.">
        </action>
    </group>
</actions>

这个时候再 run 插件就会发现它单独建立了一个 group,如下图所示:

但是不建议这样使用,因为如果每一个插件都添加一个 group 在主菜单栏的话,那么主菜单栏就会非常杂乱,所以还是隐藏在二级菜单中比较好一点。

 

五、打包发布

5.1 打包

在 IntelliJ IDEA 顶部主菜单中选择 build -> Prepare Plugin Module "xxx" For Deployment 即可,如下图所示:

当提示完成后,会在项目根目录下生成一个 XXX.jar 的包,如下图所示:

这个 jar 包就可以提供给别人使用了。

5.2 发布

IntelliJ 的插件也有一个市场,是官方提供的,可以在平台上发布自己的插件,地址:https://plugins.jetbrains.com/如果没有账号的请先注册账号,发布插件如下图所示:

上传成功将会出现如下页面。

发布插件需要两个工作日审核时间。

说明: 在打包的时候 plugin.xml 中的内容不能有默认值,而且必须要有<depends>标签,实例代码如下:

<idea-plugin>
    <id>com.lx.plugin.database</id>
    <name>Database Generator</name>
    <version>1.0</version>
    <vendor email="xxx@163.com">lx</vendor>
    <description>auto generator db code</description>
    <change-notes>initial version 1.0</change-notes>
​
    <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
    <idea-version since-build="173.0"/>
​
    <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
         on how to target different products -->
    <!-- uncomment to enable plugin in all products  -->
​
    <depends>com.intellij.modules.lang</depends>
​
​
    <extensions defaultExtensionNs="com.intellij">
        <!-- Add your extensions here -->
    </extensions>
​
    <actions>
        <!-- Add your actions here -->
        <action id="DatabaseGenerator.GeneratorAction" class="DatabaseGeneratorAction" text="Datebase Generator"
                description="auto generator database code.">
            <add-to-group group-id="CodeMenu" anchor="last"/>
        </action>
    </actions>
​
</idea-plugin>

 

六、安装插件

打开 Android Studio 开始安装插件,安装插件入口为 File -> Settings -> Plugins 有两种方式:

1. 从本地安装插件

这种需要用到插件项目生成的 jar 包,选择 Installed 选项旁边的设置小图标,点击之后在选择 Install plugin from disk ,然后找到jar文件选中OK即可。

2. 从插件市场安装

弹出对话框中选 Marketplace ,搜索你自己发布的插件,然后安装即可。

这里由于我刚刚发布的插件还没有通过审核,所以搜索不出来。

说明:由于插件内容过于简单,有可能通不过审核,所以这里就不在继续跟踪审核结果了。这里重点是将插件开发与打包发布流程描述清楚。

验证结果

我们在 Android Studio 中成功安装好插件之后,在 Code 菜单栏下面成功显示了 Database Generator 了。如下图所示:

点击 ”Database Generator“ 之后弹出如下页面:

输入内容之后点击 "OK",弹出如下结果页面:

到此,说明插件正常在 Android Studio 中使用。

扫描下方二维码关注公众号,获取更多技术干货。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值