
最近,在优化 APK 体积,压缩图片一般会使用 TinyPNG ,想着一张一张处理太麻烦,就搜索了一些批量处理的工具,有 gradle 脚本的,也有 IDEA 插件的,结果都不大理想,因此,想自己开发一个 TinyPNG 的插件。
IDEA 全称IntelliJ IDEA,是用于 java 语言开发的集成环境(也可用于其他语言),IntelliJ 在业界被公认为最好的java开发工具。
IDEA 的创造者,大名鼎鼎的 JetBreain 公司,同时还创造出许多 IT 界耳熟能详的开发工具,
例如:PyCharm、 WebStorm、 PhpStorm ,还有谷歌维护的 Android Studio
这些工具有些需要收费,当然,网上也有很多免费的注册码,在线生成intellij idea注册码 (话题跑偏了~)
我们在使用这些集成环境时,通常会安装许多 Plugin,而这些插件也是可以自行开发的。
这里就以 TinyPNG (Github 地址)这个插件为例,记录下开发插件的过程。
搭建环境
插件开发,要用到IntelliJ Platform SDK 环境,所有一般使用到 IntelliJ IDEA ,点此下载。
这里有两个版本,Community 是免费版,Ultimate 30 天免费使用,过后可以使用注册码。
两个版本都可以,下载安装完成后,打开

选择新建项目 Create New Project

左边选择插件项目 IntelliJ Platform Plugin ,然后右边选择正确的插件环境,点击 Next ,填写项目名称以及存放位置。
项目创建完成后,目录很简单,这里放出 TinyPNG 的目录

lib 目录是手动创建的目录,里面存放一些依赖库
src 目录存放项目代码
resources 目录中, plugin.xml 是整个插件的配置文件,很重要,下面给出 TinyPNG 中的 plugin.xml 文件部分代码
<idea-plugin>
<id>cn.deemons.tinypng.plugin</id><!--插件id,不能和其他插件项目重复,推荐com.xxx.xxx的格式 -->
<name>TinyPNG</name><!--插件名称 -->
<version>1.3</version><!--插件版本号 -->
<vendor email="deemonsch@gmail.com" url="https://deemons.cn">Deemons</vendor>
<!--插件发布者信息,可以添加邮箱链接 -->
<!--插件描述信息,在这里可以介绍你的插件内容,支持HTML标签 -->
<description><![CDATA[
<h1>TinyPNG</h1>
<br/>
<p><b>A plugin for compression picture by TinyPNG API.</b></p>
<br/>
<p><b>利用 TinyPNG 的 API ,开发的图片压缩工具,其中提供了一些 Key。</b></p>
<p><b>欢迎大家留言,提供更多 API Key。</b></p>
]]>
</description>
<!--插件版本变更日志,支持HTML标签 -->
<change-notes><![CDATA[
<ul>
<li>v1.3 fix some bug</li>
<li>v1.2 add info</li>
<li>v1.1 fix bug</li>
<li>v1.0 init</li>
</ul>
]]>
</change-notes>
<!-- 对IntelliJ IDEA软件支持本插件版本号 -->
<idea-version since-build="145"/>
<!-- 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>
这里填写的信息,会在别人搜索你插件的时候展现介绍

创建Action
在 src 下新建 Action

然后,填写相关信息

点击 ok 后,会在 src 目录下,自动生成对应的文件
public class Action extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
// 每次点选此 Action,都会调用到这里
}
}
同时,在插件的配置文件中 plugin.xml
,自动生成对应的 action
<actions>
<!-- Add your actions here -->
<action id="Action" class="Action" text="Action" description="Action">
<add-to-group group-id="CodeMenu" anchor="last"/>
</action>
</actions>
到此,插件的基本创建就结束了。
之后的编程,很大程度需要依赖 对 Java GUI Swing 的熟悉程度了,反正我是不熟悉的。
如果需要了解,创建弹窗、存储数据等知识,请参考
Android Studio Plugin 插件开发教程(一) —— 开发你的第一个插件
这两个系列教程。
打包发布
在插件编写的工程中,需要查看效果,可以直接点击 run
按钮,它会重启一个新的 IDEA,然后随便进入一个项目,查看此插件的效果。
如果插件编写完成,这时候,可以直接打包插件,点击 Build -> Prepare Plugin Module...

之后,会在项目目录下,生成一个 zip 文件,这个文件就是打包的插件。
这个插件,可以发布到插件市场,供其它人下载使用。
地址:https://plugins.jetbrains.com/
登录之后,就可以上传你的插件了

其中,LICENSE 需要填写协议证书地址,一般直接填写 http://www.apache.org/licenses/LICENSE-2.0
提交,上传成功后,需要一两天的审核时间,如果审核通过,就可以搜索到此插件了。
欢迎 start ,欢迎留言更多 API Key
参考
AndroidStudio插件开发(Hello World篇)
学会编写Android Studio插件 别停留在用的程度了
手把手教你 Android Studio 插件从开发到发布官方
网友评论