android studio 插件開發
起因
去年公司開始上新項目,正好android在架構這方面的討論也開始多了起來,於是mvp架構模型就進入我們技術選擇方案里面,mvp有很多好處,但是有一個非常麻煩的地方是代碼量很大,寫一個頁面需要寫很多接口類回調。所以當時就想寫一個插件用代碼來生成,但是迫於項目緊急一直沒有研究。最近公司項目不是很緊,所以抽空搞了下.
過程
剛開始選擇方案,我是准備拿python寫,因為之前也接觸過,寫過一點小程序,所以還算比較順手,但是寫了一半之后,感覺用python和androidstudio結合不是很緊密,通過了解,開發android studio的插件也是用java,所以就再次換成開發android studio的方式。
由於android studio是用的IntelliJ IDEA的開源版本做的,所以開發android studio的插件 ,其實就是開發IntelliJ IDEA的插件,所以IntelliJ IDEA是必須的,可以在官網去下載社區免費開源版本。
下載好之后,新建項目

選擇sdk 里面的jdk的目錄。這樣就新建好了一個插件工程
里面有如下兩個重要的目錄

其中plugin文件中主要進行一些插件配置,比如說插件名字,插件的官網,當然一些按鈕之類的也是在這里面配置
<idea-plugin version="2">
<id>com.gaotenglife.create</id>
<name>MVP_CODE_CREATOR</name>
<version>1.0</version>
<vendor email="gaotengxuelang@gmail.com" url="http://www.gaotenglife.com">xuelang</vendor>
<description>
幫助生成mvp框架代碼
</description>
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<idea-version since-build="141.0"/>
<extensions defaultExtensionNs="com.intellij">
</extensions>
<actions>
<group id="MvpPlugin.SampleMenu" text="_MvpTools" description="tools">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="MvpPlugin.CreateFileAction" class="CreateMVPFiles" text="CreateFiles" description="createfiles" />
</group>
</actions>
<application-components>
</application-components>
</idea-plugin>
上面大概一看就能懂,下面一塊就主要用來定義點擊事件,其中的class代表點擊事件的類
<actions>
<group id="MvpPlugin.SampleMenu" text="_MvpTools" description="tools">
<add-to-group group-id="MainMenu" anchor="last" />
<action id="MvpPlugin.CreateFileAction" class="CreateMVPFiles" text="CreateFiles" description="createfiles" />
</group>
</actions>
同時我們在src目錄下新建一個java類,繼承自AnAction
public class CreateMVPFiles extends AnAction {
@Override
public void actionPerformed(AnActionEvent event) {
project = event.getData(PlatformDataKeys.PROJECT);
packagebase = readPackageName();
initSelectView();
project.getProjectFilePath();
}
}
其中actionPerformed方法就是點擊響應的方法.
接下來主要就是java swing的一些界面操作了,比如你可以新建jframe jdialog
等等。這樣簡單的入門插件你就能開發了。
下面是我寫的項目的源代碼地址
MvpCodeCreator插件代碼地址
轉載請注明出處http://www.cnblogs.com/gaoteng/p/5684076.html
轉載請注明出處http://www.gaotenglife.com/?p=399
