一、下载开发工具
android studio插件开发使用的是IntelliJ IDEA,其实android studio就是基于IntelliJ IDEA的社区版本发展而来的。在官网进行下载IntelliJ IDEA。
二、配置IntelliJ IDEA
下载安装启动IntelliJ IDEA后,点击创建新项目
因为我们要开发的是android studio插件,所以这里选IntelliJ Platform Plugin。右侧需配置项目SDK,如果不配置直接点击next会被提示没有sdk。
这里有个小坑的点,就是当点击Project SDK右侧输入框的三角选择按钮时,会弹出本地文件选择框,但我们并不知道这个sdk在本地的什么地方。其实,就是文件选择框正在选择的文件目录,我们直接点确定就好了。
当然IntelliJ IDEA支持使用其他语言进行开发,比如下图左侧Kotlin,甚至我们可以去IntelliJ IDEA的preference->plugin的Marketplace 下载其他插件比如python,进行python开发,但是这里如果不选IntelliJ Platform Plugin,那么就不是我们现在介绍的插件开发了。
三、plugin.xml介绍
回归正题,选择IntelliJ Platform Plugin后点击Next,给项目取名后点击finish,这时展示的页面是该项目的plugin.xml。
这个是项目的配置文件,有很多配置项,让我们来逐一解释下:
<id> :该项目的唯一id,当该项目被上传到应用商店后,这个id将用来区分不同插件,如果尝试上传相同id的插件,应用商店就会提示错误。
<name> :插件名字,如果导出的插件安装到android studio上,会是已安装插件的插件名。
<version> :插件版本号,升级使用
<vendor>:作者信息,其中作者名字会显示在已安装插件信息页面
<description> :对插件的描述,较为重要,用户对插件的初印象就是该描述的内容,描述是否清晰可能直接影响到用户对插件功能的理解,直接影响到用户是否安装茶几。IntelliJ建议至少超过40字符,过少会有文字下方红线提示
<change-notes>:这里用来写每个版本都做了哪些改动,同样会展示在插件信息页
<idea-version> :支持的idea版本,写一个较老的版本即可(比如173,代表17年3月的版本),如果这个版本过新,会导致老版本的IntelliJ IDEA无法使用该插件
<actions> :这里存放一个或多个<action>节点,每个action节点是用户使用插件的入口,比如,可以在这里指定一个新建的AnAction类(该类作用是运行该插件功能的入口,比如弹出界面或执行后台逻辑),并指定用户可见的入口位置及入口名字,方便用户触发该插件,甚至可以配置键盘快捷键,用户可通过快捷键迅速启动插件。具体action的用法在下面进行示例讲解。
如下是android studio Preferences->Plugins页面,plugin.xml中相应的字段显示位置已经标出,便于大家理解
四、开发简单插件
我们用一个例子来说明简单的插件开发。
1.填写plugin.xml基础信息
按照第三部分所示的步骤创建好项目后,我们先手动的将plugin.xml文件中id、name、version、vendor、description、change-notes字段按需要填写好,我这里填写如下:
2.新建弹窗
一般插件都是有与用户交互的界面,这里我们新建一个弹窗作为简单实例。在插件开发中,可以使用java swing的各种ui控件,也可以使用IntelliJ特有的一些ui控件,这里是一些官方ui开发参考。
对于高手,可以完全手敲代码创建,对于我们这种小白来说,有更为简单的方式实现。
使用如下图所示方式创建一个dialog。
新建dialog类后,会自动的生成一个java类和一个.form文件
我们选中.form文件,可以通过拖动控件的方式修改布局,实现简单的布局效果。
自动生成的弹窗java类文件里也贴心的帮我们设置好了点击事件、甚至我们新拖进的控件也帮我们声明好了。但是有一点还是需要注意,自动生成的类文件中没有设置dialog宽高,直接运行会发现这个dialog十分小,因此这里我们加入简单的宽高限制
setMinimumSize(new Dimension(200, 300));
3.创建action
相对于一个字母一个字母的手敲创建,更easy的做法是使用IntelliJ自带的Plugin DevKit生成action。注意,只有鼠标选择了项目的src或其文件夹下的文件时,才能出现Action的新建选项,如下所示
点击Action后填写好必要字段,Add to Group作用是该action入口显示在哪个地方,我们这里选择HelpMenu,代表显示在help菜单里,这里也可以配置键盘快捷键。
点击OK后,会在plugin.xml中自动生成action
也会同时生成action类文件,在该类中,我们new并展示一个上面刚编写好的弹窗即可
四、调试
像android studio一样,我们可以直接运行或单步调试(如红框所示)
点击运行后,会弹出新的IntelliJ IDEA窗口,我们随便新建或打开一个项目,待项目index完毕后,可以在菜单栏内发现我们刚写的插件入口,点击后就会弹出自定义弹窗。
因为最终插件是运行在android studio而非IntelliJ IDEA,而且真正插件运行环境可能比自己测试的demo更复杂,会导致实际应用中会出现各种bug,因此不能仅仅满足于在intelliJ IDEA中通过debug进行测试,需要导出插件包,放到真实的环境中进行测试,但这时候的测试就无法进行单步调试了,有问题就不太容易发现,可以通过在代码一些主要逻辑节点上进行弹窗显示核心信息的方式排查问题代码位置,就像打log一样。
插件打包入口在Build菜单中,点击Prepare Plugin Module *** For Deployment后,左侧项目目录下会生成相应的jar包,jar包名字就是项目名。
android studio中可在Preference->Plugin的如下入口处选择安装本地插件,进行实际环境的测试
六.上传插件
IntelliJ的插件有个官方市场:https://plugins.jetbrains.com/,可以在这里免费发布插件,该网站国内可访问,无需翻墙。
上传插件首先要进行登录或注册,入口在官网右上角:
没有账号则点击Sign up进行注册,否则可直接点击相应的账号类型图标进行登录
点击了Sign up后在接下来的网址中进行注册即可
登录后,发布插件的入口就会显示在官网右上角
选择上传文件,协议选择Apache license 2.0,Category选择android后直接上传插件
这时网站会提示插件已经上传
但实际上,进入个人主页会发现该插件还在审核,提示预计2个工作日有结果
审核通过后,就可以在android studio插件商店中搜到并下载使用了