android studio上的插件有很多,使用这些插件能大大提高我们的开发效率。说下怎么开发简单的AS插件。因为我用的是mac,就说说mac,win的类似(只需要再装下java sdk)。
这里就举个简单的例子,做一个创建activity和fragment生命周期所有方法的插件。
首先先下载IntelliJ IDEA这款IDE,android studio插件的开发不能使用android studio,而是要用InteillJ,下载链接 https://www.jetbrains.com/idea/download/#section=mac。选择下载免费的community版本就可以。然后安装,安装后启动创建新项目,创建新项目选择IntelliJ Platform Plugin
java sdk Mac系统默认是有的,不需要下载,如果是win系统先下载在指定下路径就行。然后这样一步步默认创建下去。
1. 修改plugin.xml
创建完以后大概就这样,主要看下plugin.xml这个文件,这个是配置文件,相当于android stuido里面的Androidminfest.xml。具体看下几个参数的意思:
id 这个插件的唯一识别码,跟别的插件做区分,如果你做的插件只是自己用,不发布到仓库,那可以不用改默认就可以。如果要发布,这个就需要改下。
name 插件的名字,是会显示在IDE上的
version 插件版本号
vendor email 邮箱,不发布到仓库可以不用管。
除了version,其他都做了修改,具体见图。
2.创建action
在src上右键,创建action
Groups选择的是要在哪个菜单下显示插件
创建完action后,会自动生成类下src下,也会在plugn.xml里面出现action的相关信息。
3. 实现action
创建完action,就下来就是实现action。实现action,主要就是实现actionPerformed方法,代码直接贴出来。
这个是生成activity生命周期
public class ActivityLifeCycle extends AnAction { @Override public void actionPerformed(AnActionEvent e) { //获取Editor和Project对象 Editor editor = e.getData(PlatformDataKeys.EDITOR); Project project = e.getData(PlatformDataKeys.PROJECT); Document document = editor.getDocument(); Runnable runnable = new Runnable() { @Override public void run() { document.insertString(0, getContent()); } }; //加入任务,由IDEA调度执行这个任务 WriteCommandAction.runWriteCommandAction(project, runnable); } private String getContent(){ return "\n"+" @Override\n" + " protected void onCreate(Bundle savedInstanceState) {\n" + " super.onCreate(savedInstanceState);\n" + " }\n" + "\n" + " @Override\n" + " protected void onStart() {\n" + " super.onStart();\n" + " }\n" + "\n" + " @Override\n" + " protected void onRestart() {\n" + " super.onRestart();\n" + " }\n" + "\n" + " @Override\n" + " protected void onResume() {\n" + " super.onResume();\n" + " }\n" + "\n" + " @Override\n" + " protected void onPause() {\n" + " super.onPause();\n" + " }\n" + "\n" + " @Override\n" + " protected void onStop() {\n" + " super.onStop();\n" + " }\n" + "\n" + " @Override\n" + " protected void onDestroy() {\n" + " super.onDestroy();\n" + " }"+ "\n"; } }
下面这个是生成fragment生命周期
public class FragmentLifeCycle extends AnAction { @Override public void actionPerformed(AnActionEvent e) { //获取Editor和Project对象 Editor editor = e.getData(PlatformDataKeys.EDITOR); Project project = e.getData(PlatformDataKeys.PROJECT); Document document = editor.getDocument(); Runnable runnable = new Runnable() { @Override public void run() { document.insertString(0, getContent()); } }; //加入任务,由IDEA调度执行这个任务 WriteCommandAction.runWriteCommandAction(project, runnable); } private String getContent(){ return "\n"+" @Override\n" + " public void onAttach(Context context) {\n" + " super.onAttach(context);\n" + " }\n" + "\n" + " @Override\n" + " public void onCreate(@Nullable Bundle savedInstanceState) {\n" + " super.onCreate(savedInstanceState);\n" + " }\n" + "\n" + " @Nullable\n" + " @Override\n" + " public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {\n" + " return super.onCreateView(inflater, container, savedInstanceState);\n" + " }\n" + "\n" + " @Override\n" + " public void onActivityCreated(@Nullable Bundle savedInstanceState) {\n" + " super.onActivityCreated(savedInstanceState);\n" + " }\n" + "\n" + " @Override\n" + " public void onStart() {\n" + " super.onStart();\n" + " }\n" + "\n" + " @Override\n" + " public void onResume() {\n" + " super.onResume();\n" + " }\n" + "\n" + " @Override\n" + " public void onPause() {\n" + " super.onPause();\n" + " }\n" + "\n" + " @Override\n" + " public void onStop() {\n" + " super.onStop();\n" + " }\n" + "\n" + " @Override\n" + " public void onDestroyView() {\n" + " super.onDestroyView();\n" + " }\n" + "\n" + " @Override\n" + " public void onDestroy() {\n" + " super.onDestroy();\n" + " }\n" + "\n" + " @Override\n" + " public void onDetach() {\n" + " super.onDetach();\n" + " }"+ "\n"; } }
4.看运行效果
直接运行看效果
因为不是android studio的环境所以会有报错。这用我们的插件就完成了。
5.在android studio上的使用和发布
生成jar或者更新jar需要运行Build下的Prepare Plugin Module,我们使用这个jar就可以在android studio上使用插件
提交到仓库前需要把plugn.xml文件里的<depends>com.intellij.modules.lang</depends>注释打开,否则无法发布到android studio的仓库。然后到https://plugins.jetbrains.com/plugin/add/idea这个地址去发布就行啦,先注册个账号,提交jar,填写信息,然后等待审核。
over!