轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/78112003
本文出自【趙彥軍的博客】
一:概述
相信大家在使用Android Studio的時候,或多或少的會使用一些插件,適當的配合插件可以幫助我們提升一定的開發效率,更加快樂。例如:
https://github.com/zzz40500/GsonFormat 可以幫助我們從Gson轉化為實體類
https://github.com/avast/android-butterknife-zelezny 可以幫助我們更加方便的使用butterknife
https://github.com/Skykai521/ECTranslation 可以幫助在IDE里面完成英文->中文的翻譯
其他更多好用的插件詳見 Android Studio 常見插件收藏
有句話叫做授人以魚不如授人以漁,不能一直跟隨着別人的腳步去使用插件了,有必要去學習編寫插件,當自己有好的創意的時候,就可以自己實現了。今天的內容就是:自己編寫一個Android Studio插件。
二:前期准備
在正式動工之前,我們需要做一些准備工作,否則后面的內容難以展開。
1、 安裝 jdk ,配置環境變量。安裝過程這里不細說,直接搜索即可。
2、 你需要了解 groovy 的相關知識,包括 groovy 環境搭建,groovy 開發工具了解,groovy 語法了解,這些不在這里細說,具體的知識點可以參考我的博客 Groovy 使用完全解析
三:Android Studio Plugin 開發工具
開發工具我們選擇用 IntelliJ IDEA
下載地址: https://www.jetbrains.com/idea/
在官網中 IntelliJ IDEA 有兩個版本 Ultimate 、Community。Ultimate 是收費版,Community 是免費版。對於收費版有經濟能力的可以考慮,但是我們的插件開發用免費版 Community 就可以了。
IntelliJ IDEA 的安裝過程,這里不細說。
四、新建Plugin Project
在打開的IntelliJ IDEA 中選擇 File | New | Project
groovy 我們暫時不勾選,點擊 Next
最后輸入項目名稱確定,點擊 finish 完成創建
五、配置插件項目
創建好的 Plugin 項目中,會默認生成一個 plugin.xml 的配置文件
其中可以修改該插件項目的相關配置信息,比如插件名稱、插件版本號等,如下圖
各標簽意義具體為:
-
[ id ] 插件id,類似於Android項目的包名,不能和其他插件項目重復,所以推薦使用com.xxx.xxx的格式
-
[ name ] 插件名稱,別人在官方插件庫搜索你的插件時使用的名稱
-
[ version ] 插件版本號
-
[ vendor ] 插件發布者信息,可以添加郵箱鏈接
-
[ description ] 插件描述信息,在這里可以介紹你的插件內容,支持HTML標簽
-
[ change-notes ] 插件版本變更日志,支持HTML標簽
-
[ idea-version ] 對IntelliJ IDEA軟件支持本插件版本號
分為since-build最低版本 和 until-build最高版本,兩個屬性可以任選一或者同時使用
官網有詳細介紹 www.jetbrains.org/intellij/sd…
大體規則為 since-build <= 支持版本 < until-build -
[ extensions ] 自定義擴展,暫時用不到
-
[ actions ] 具體的插件動作,后面會介紹
配置中填寫的信息,會在別人搜索你插件的時候展現介紹,在 File | Settings | Plugins 中查看已有插件,或者再點擊 Browse respositories 中瀏覽插件中心里其他人發布的插件。當選中一個插件時,右側就可以看到plugin.xml中配置的信息了,同樣這里也可以進行插件的刪除和添加安裝操作,每次操作都需要重啟軟件后才能生效。
六、開始編寫插件
項目創建好時有一個src文件夾,可以在其中File | New ...新建文件,
主要有這么幾種針對插件的特殊文件類型
- GUI Form:表單界面
- Dialog:對話框
- XXXComponent:作用域類,其中又分為Application、Project、Module 分為作用於不同范圍
- Action:處理插件交互行為的類
在項目中的 src 目錄中,New | Plugin Devkit | Action
Action的創建的對話框如下:
- Action ID: 動作ID,推薦用“插件名.XXAction”的格式
- Class Name:編寫Action的類文件名
- Name:動作在菜單選項中展示的名字
- Description:動作描述
- Groups:定義這個動作選項所屬的組,比如EditMenu就對應IDE菜單欄上的Edit,CodeMenu就對應菜單欄上的Code
- Actions:是當前選中Groups下已有的Action動作,比如上圖示如果我們選擇CodeMenu就會展示Code中已有的幾個選項
- Anchor:用來指定動作選項在Groups中的位置,Frist就是最上面、Last是最下面,也可以設在某個選項的上/下方
- Keyboard Shortcuts:調用插件Action的快捷鍵,可以不填,要注意熱鍵沖突
創建好Action后,會自動在plugin.xml配置文件的actions標簽中新增一個對應的Action動作信息。
<actions>
<!-- Add your actions here -->
<action id="TestID" class="com.Test" text="Test" description="Test">
<add-to-group group-id="EditMenu" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl Q"/>
</action>
</actions>
注意
- 這里的信息我們都可以再次修改,但是 class name 修改時要注意和類文件名匹配
- 可以修改添加多個,即在不同菜單中都可以選擇使用
- 同一個 group下多個 action 的 id 不能重復.
src下創建好的Action類會默認繼承 AnAction,然后實現 actionPerformed 方法,在方法中添加如下代碼,讓點擊這個 Action 的時候彈出一個輸入框。
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
public class Test extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
Project project = e.getData(PlatformDataKeys.PROJECT);
String txt = Messages.showInputDialog(project,
"What is your name?",
"Input your name",
Messages.getQuestionIcon());
Messages.showMessageDialog(project,
"Hello, " + txt + "!\n I am glad to see you.",
"Information",
Messages.getInformationIcon());
}
}
寫好代碼后,run運行項目,此時會自動啟動一個新的IntelliJ IDEA項目,這個新項目里就會包含我們剛編寫的插件選項了。
七、打包
比較簡單,直接在頂部主菜單欄中選擇 Build | Prepare Plugin Module XXX For Deployment 即可。
打包前要注意把 plugin.xml 配置文件中的相關信息填寫完整。
打完包后,將會生成 .Jar 包
類似於安卓打包生產的apk,這個時候你就可以把它丟給別人使用了
八、Android Studio 測試插件
在上一章中,我們已經打包好插件 Plugin.jar ,現在我們在 Android Studion 測試一下。
8.1 安裝插件
File --> Settings --> Plugins --> Install plugin from disk
8.2 測試插件
或者按快捷鍵 Ctrl + Q 啟動插件。
九、上傳插件
IntelliJ的插件也有一個市場,是官方提供的,可以在平台上發布自己的插件
地址:https://plugins.jetbrains.com/
打開插件中心,注冊好賬號,然后選擇 Upload Plugin
將你生成的插件jar包上傳,然后選擇分類,最后確認完成上傳。
十、參考資料
【Android Studio Plugin 插件開發教程】https://juejin.im/post/599f7f546fb9a0248c2de496
下一篇:Android Studio 插件開發詳解二:工具類
個人微信號:zhaoyanjun125 , 歡迎關注