最近,在優化 APK 體積,壓縮圖片通常會使用 TinyPNG ,想着一張一張處理太麻煩,就搜索了一些批量處理的工具,有 gradle 腳本的,也有 IDEA 插件的,結果都不大理想,所以,想本身開發一個 TinyPNG 的插件。php
IDEA 全稱IntelliJ IDEA,是用於 java 語言開發的集成環境(也可用於其餘語言),IntelliJ 在業界被公認爲最好的java開發工具。html
IDEA 的創造者,大名鼎鼎的 JetBreain 公司,同時還創造出許多 IT 界耳熟能詳的開發工具,java
例如:PyCharm、 WebStorm、 PhpStorm ,還有谷歌維護的 Android Studiogit
這些工具備些須要收費,固然,網上也有不少免費的註冊碼,在線生成intellij idea註冊碼 (話題跑偏了~)github
咱們在使用這些集成環境時,一般會安裝許多 Plugin,而這些插件也是能夠自行開發的。web
這裏就以 TinyPNG (Github 地址)這個插件爲例,記錄下開發插件的過程。apache
插件開發,要用到IntelliJ Platform SDK 環境,全部通常使用到 IntelliJ IDEA ,點此下載。編程
這裏有兩個版本,Community 是免費版,Ultimate 30 天無償使用,事後可使用註冊碼。phpstorm
兩個版本均可以,下載安裝完成後,打開webstorm
選擇新建項目 Create New Project
項目建立完成後,目錄很簡單,這裏放出 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>
複製代碼
這裏填寫的信息,會在別人搜索你插件的時候展示介紹
在 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 插件從開發到發佈官方