MAC上开发android studio插件基础教程

 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!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值