需求
AndroidStudio 有很多插件,可供开发者集成、使用。
像Flutter、Cordova、mPaas等众多插件,都拥有一个共同的功能,就是创建“模板工程”。也就是使用这些插件创建的Android工程已集成好了相关的依赖、配置,开发者们也不需要再从零开始集成,直接开发就可以了,非常方便。
我们这边也需要对外提供SDK,也想参考这种方式,提供给调用方使用。
在网上,自定义插件的资料倒是有一些,不过使用自定义插件创建工程的资料却是 零 !!!
没办法,只能通过AndroidStudio插件反推吧:
我这边是在AndroidStudio -> Setting-> Plugins ->Marketplace找了几款会创建工程的插件,去其官网,下载插件,然后反编译得到源码的(下了很多插件,反编译源码,没有任何混淆的,哈哈,省时间了~)
通过分析其源码,实现插件创建模板工程的方式主要有两种:
1、在插件中放入模板工程文件,创建工程时,直接执行IO操作,使用模板文件创建工程;(稍简单一些)
2、在插件代码中通过IO创建工程文件,执行代码逻辑向文件中写内容;(逻辑复杂一些)
我这边选择使用方案1,简单高效,维护也方便。
设计
不啰嗦了,直接上具体实施方案:
1、将纯净版模板工程(删除build的工程)压缩成一个文件,将来作为模板文件放入插件
2、插件安装后,插件菜单显示在AndroidStudio -> File菜单的顶部(new菜单的上面,看着舒服些,哈哈~)
3、用户点击插件菜单,创建模板工程,会弹出提示框,让用户选择目标位置
4、用户选择目标位置后,点击【创建】,将插件中的模板文件(模板工程.zip)拷贝至指定位置
5、解压缩模板工程.zip,得到完整的模板工程(解压后,也可删除压缩包文件)
开搞
1、安装 IntelliJ IDEA
Java编程语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具。
我们的插件也要使用该工具实现,不懂如何使用的同学,可以先去做做功课哈~
下载地址:http://www.jetbrains.com/idea/
我选择的是Community(社区版)
然后下一步......即可
2、创建插件工程
file->new->Intellij Platform Plugin
新建完成的目录,其中 plugin.xml 相当于我们的 AndroidManifest.xml,对一些Actions(类似于我们的Activity)进行注册,逻辑代码同样写在 src 中,资源文件(比如说icon)放在 resources 中
3、插件工程结构
template:存放模板文件的目录
-- readme.txt 让用户读的文本信息,例如插件版本、日期、变更内容、联系人...
-- TestTemplate.zip 模板工程压缩包文件
com.qxc.testplugin:存放插件代码逻辑的目录、
-- AddFileActionByTemp action动作类,监听用户点击菜单动作
-- OutFolderChooser 自定义文件目录选择器类
-- UnZipUtils 解压缩工具类
4、plugin.xml
定义插件信息、action信息(菜单项),源码:
<idea-plugin version="2">
<id>com.qixingchao.createufp</id>
<name>CreateUFPProject</name>
<version>1.0</version>
<vendor email="970188529@qq.com" url="http://baidu.com">qxc</vendor>
<description><![CDATA[
Create a ufp project.<br>
]]></description>
<change-notes><![CDATA[
]]>
</change-notes>
<idea-version since-bui