Android Studio是基于Intellij IDEA开发的,所以需要使用IDEA开发插件,同时,开发出的插件可以适用于所有基于Jetbrain Intellij的系列产品,除非插件使用了特定平台的依赖库或者限定了适用的平台
对安卓工程下的各个res/mipmap内的不同大小的logo图片进行一键替换
- 打开IntelliJ IDEA Ultimate (我使用的是2021.1.3),点击New Project
 - 左侧选择Gradle类型(不再推荐左侧选择Intellij Platform Plugin类型),右侧指定JDK版本为1.8,勾选Java和Intellij Platform Plugin,点击Next
 
intellij {
    version = '2020.1' // 因为Android Studio 4.1是基于IDEA 2020.1 Community版本开发的,所以这里调试也指定为此版本
    plugins = ['android']
}
buildSearchableOptions {
    enabled = false
}
patchPluginXml {
    changeNotes = """
      Add change notes here.<br>
      <em>most HTML tags may be used</em>"""
    sinceBuild = '191' // 插件适用的IDEA版本范围,此范围基本涵盖了Android Studio最近两三年的版本
    untilBuild = '212.*'
}- 按需修改<name>、<vendor>、<description>标签内的内容
 - 在<depends>标签下新增:
 
<depends>com.intellij.modules.platform</depends>
<depends>com.intellij.modules.xml</depends> // 支持xml文件操作
<depends>org.jetbrains.android</depends> // AS相关在/src/main/java文件夹上右键,New package创建com.haivo.plugin包
点击Gradle Sync同步工程, 第一次同步需要下载IDEA-IC2020.1版本以及android依赖,可能需要10-20分钟,耐心等待同步完成。
- 在com.haivo.plugin文件夹上右键,选择New > Plugin Devkit > Action
 
- 
依次填入id name等信息,Action ID最好采用全限定名,Group选择ProjectViewPopupMenu,表示将此菜单附加到右键菜单项内,你也可以选择ToolsMenu,表示附加到顶部Tools选项菜单内
 - 
另一种创建Action的方式是直接编辑plugin.xml的<actions>标签,并创建相应的class,这种方式还可以灵活的为Action创建一组ActionGroup,效果就是菜单项会出现“▷”可展开项
 
<actions>
        <!-- Add your actions here -->
        <action id="com.haivo.plugin.importpictureaction" class="ImportPictureAction" text="导入图片"
                description="一键批量导入图片">
            <add-to-group group-id="ProjectViewPopupMenu" anchor="last"/>
        </action>
</actions>- 从这里开始就是JavaFx的知识了,不过不用了解太深,我们修改ImportPictureDialog类的父类为DialogWrapper,实现createCenterPanel()方法,修改构造方法,并添加init()方法(重点,否则没有界面!)
 
public class ImportPictureDialog extends DialogWrapper {
    private JPanel contentPane;
    private JButton buttonOK;
    private JButton buttonCancel;
    public ImportPictureDialog(AnActionEvent event) {
        super(event.getProject());
        init();
    }
    @Override
    protected @Nullable JComponent createCenterPanel() {
        return contentPane;
    }
}- 
打开ImportPictureDialog.form文件,是不是很熟悉?其实这跟AS中的layout editor很像, 选中ok按钮按Delete删除,cancel按钮同理,因为DialogWrapper自带了这两个按钮
 
- 修改ImportPictureAction
 
public class ImportPictureAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        // 此处的代码会在Action被点击后执行
        new ImportPictureDialog(e).show();
    }
}- 完成后我们先调试一波,点击Run Plugin(▶)按钮,稍等一会儿会启动一个新的IDEA窗口实例,这个实例会自动安装好我们的插件,我们选择一个安卓工程打开,然后在左侧Project窗口内右键app/src/res文件夹,会发现菜单的底部出现了一个“导入图片”选项,点击出现下述图片,至此我们的插件已基本成型,接下来只需要编写业务代码即可
 
- 具体的业务代码不再此处列出了,查看源码即可,主要都在ImportPictureDialog.java类里
 
- 在右侧点击Gradle,找到publishPlugin,双击执行,或者在命令行下执行
 
.\gradlew publishPlugin- 在build/libs下即可找到该jar包
 
- 将该jar包拖进Android Studio的编辑区, 然后重启AS,插件即安装完成