1. 程式人生 > >MAC上開發android studio外掛基礎教程

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!