專案原始碼
系列教程
Android Studio Plugin 外掛開發教程(一) —— 開發你的第一個外掛
Android Studio Plugin 外掛開發教程(二) —— 外掛SDK中的常用物件介紹
Android Studio Plugin 外掛開發教程(三) —— 製作一個自動生成資料庫程式碼的外掛
Android Studio Plugin 外掛開發教程(四) —— 為自動生成資料庫程式碼的外掛新增UI
本教程基於官方文件編寫,原版地址如下
官方文件 www.jetbrains.org/intellij/sd…
搭建環境:
下載IntelliJ Idea客戶端並安裝
www.jetbrains.com/idea/downlo…
一、配置SDK
開啟IDE後,選擇 File | Project Structure
在配置視窗中點選 New... 新增SDK,選擇 IntelliJ Platform Plugin SDK
(如果第一次開啟IDE,選擇右下角 Configure | Project Defaults | Project Structure 開啟配置視窗)
彈出頁面中,選擇預設IntelliJ IDEA資料夾,確認
二、新建Plugin Project
在開啟的IntelliJ IDEA 中選擇 File | New | Project,
左側選單選擇IntelliJ Platform Plugin專案,SDK選擇剛才新配置的,下一步
其中 Groovy、Python等啥其他附加的內容無需勾選
最後輸入專案名稱確定,完成建立
三、配置外掛專案
建立好的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中配置的資訊了
同樣,這裡也可以進行外掛的刪除和新增安裝操作,每次操作都需要重啟軟體後才能生效
四、開始編寫外掛
外掛是依附於IDE的,為其提供一些小功能,比如Android Studio中,
Code | Generate | Getter and Setter 這個自動生成get和set方法的,其實就算是個外掛
當然,這些都是Android Studio中預設自帶的,我們可以根據需要開發新的外掛
專案建立好時有一個src資料夾,可以在其中File | New ...新建檔案,
主要有這麼幾種針對外掛的特殊檔案型別
- GUI Form:表單介面
- Dialog:對話方塊
- XXXComponent:作用域類,其中又分為Application、Project、Module分為作用於不同範圍
- Action:處理外掛互動行為的類
其中最主要的是Action類
之前例子中提到了,生成getter setter方法的功能是在選單欄中的Code | Generate | Getter and Setter選擇的
那麼我們自己建立的外掛選項在哪裡呢?屬於哪個選單呢?
這裡在建立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="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator"
description="auto generate db code, such as Table / CRUD sql ...">
<add-to-group group-id="CodeMenu" anchor="last"/>
</action>
</actions>複製程式碼
注意
- 這裡的資訊我們都可以再次修改,但是class name修改時要注意和類檔名匹配
可以修改新增多個,即在不同選單中都可以選擇使用 - 同一個group下多個action的id不能重複
src下建立好的Action類會預設繼承 AnAction,然後實現 actionPerformed 方法,
我們仿造官方文件中的例子,在方法中新增如下程式碼,讓點選這個Action的時候彈出一個輸入框
public class DatabaseGeneratorAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
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專案,這個新專案裡就會包含我們剛編寫的外掛選項了
如果想除錯Android程式碼,可以先在IntelliJ中的Project Structure裡配置好Android環境,然後run外掛專案執行新的IntelliJ時建一個Android Project就好了
新執行起來的IDE中就可以看到選單欄裡的 Code 最底部就出現了一個Database Generator選項
點選就會觸發我們編寫的功能
如果你覺得你的外掛不好找,也可以自行在根目錄上新建一個和Code、Edit等同級的group,需要在配置檔案裡新建一個group,然後
<actions>
<!-- Add your actions here -->
<group id="BoredreamPlugin.PluginSet" text="BdPlugin" description="the plugin set by boredream">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="DatabaseGenerator.GenAction" class="DatabaseGenerateAction" text="Database Generator" description="A test menu item" />
</group>
</actions>複製程式碼
這個時候再run外掛就會發現它單獨建立了一個group
但是要慎用~ 畢竟每個外掛都加一個group那主選單欄就亂死了,不像藏在二級選單裡會低調的多
五、打包
(這裡我們先把整個流程介紹完,更復雜的外掛開發會下一篇介紹)
比較簡單,直接在頂部主選單欄中選擇 Build | Prepare Plugin Module XXX For Deployment即可
打包前要注意把 plugin.xml 配置檔案中的相關資訊填寫完整
當提示完成後,會在專案根目錄下生成一個 XXX.jar 的包
類似於安卓打包生產的apk,這個時候你就可以把它丟給別人使用了
六、釋出
不過安卓的apk釋出,通常會有一個應用市場比如Google Play,應用寶啥的
IntelliJ的外掛也有一個市場,是官方提供的,可以在平臺上釋出自己的外掛
地址:plugins.jetbrains.com/
開啟外掛中心,註冊好賬號,然後選擇Upload Plugin
將你生成的外掛jar包上傳,然後選擇分類,最後確認完成上傳
此時雖然完成上傳,但是最好要完善一下Plugin Detail資訊,方便別人對你的外掛有更詳細的瞭解
還要再設定一下外掛的支援IDE範圍,否則別人可能在Android Studio外掛庫裡搜不到你的plugin!!!
IntelliJ開發的外掛是針對所有IntelliJ旗下產品的,而他們之間的外掛庫市場是非相通的
所以釋出外掛的時候一定要指定你的外掛是那些IDE可以使用的,比如要支援AndroidStudio
完善Plugin Detail資訊的時候,會有一個選項 Supported products 即支援產品範圍
預設是 勾選了“使用外掛中的配置裡指定的產品範圍”
這種使用外掛專案裡的配置方式,需要你在plugin.xml中新增
不過你也可以取消勾選,直接在上傳中心這裡設定產品範圍,推薦這種方式~
IntelliJ的倆是預設的,然後我們再勾選Android Studio,最後save儲存更新
七、安裝使用
開啟你常用的Android Studio開始安裝使用這些外掛吧,方式有兩種
從外掛中心直接下載安裝
IDE中選擇 File | Settings | Plugins ,彈出對話方塊中選 Browse respositories 瀏覽外掛庫
搜尋你自己釋出的外掛,然後安裝~ 安裝完成後重啟Android Studio即可開始使用外掛了從本地安裝外掛jar包
這種需要用到外掛專案生成的jar包,
選擇Browse respositories選項旁邊的 Install plugin from disk,然後找到jar檔案選中OK即可
注意,新發布到市場的外掛可能暫時搜不到,有延遲~
好了,介紹結束~
#開始編寫你的第一個外掛吧!!!
後續教程還會帶著大家一起開發一個具體的實用外掛,敬請期待~
最後安利下自己的外掛,自動佈局檔案的相關程式碼,懶人必備!還不用引入第三方的注入框架!
github.com/boredream/B…
歡迎star和follow