作文导读:IntelliJ IDEA/Android Studio插件开发入门指南
基于IntelliJ平台的产品都可以通过添加插件来丰富其原有的功能,JetBrains团队也我们提供了丰富的API来进行插件开发,所有的插件都可以在JetBrains Plugin Repository找到。常见的插件类型有:
自定义语言支持(如Java、Kotlin)
框架集成
工具集成
用户界面插件
这些类型插件的介绍以及功能就不一一细说了,官网也有比较详细的介绍。
简单来说,IDEA也好Android Studio也好(以下统一称为IDE),它们为插件提供了运行环境,通过各种插件的配合来实现不同的功能。下面就先介绍开发IDEA插件前需要哪些准备。
安装IDEA,如果想在开发插件的过程中进行Debug,那么还需要把IDEA的源码下载下来(Github源码地址)
配置IntelliJ Platform SDK,也就是开发插件所需的SDK,类似开发Android应用时需要Android SDK,并且插件都是运行在JVM上的,所以也需要配置JDK的路径
指定Sandbox Home目录,Sandbox Home目录用于存放插件项目实例的一些配置文件。在macOS系统中默认存放路径是/Users/{用户名}/Library/Caches/IdeaIC2018.2/plugins-sandbox
配置SDK,如果你把IDEA源码也下载了,那么还需要配置一下源码的路径
添加SDK.jpg
选择源码路径.jpg
环境搭建好了,那么接下来我们就创建一个简易的插件工程,依次点击File->New->Project然后在弹出框左栏选择Gradle,然后在右侧一栏勾选IntelliJ Platform Plugin(如果想要使用Kotlin进行开发就把Kotlin那一项也勾选上)
新建插件项目.jpg
项目创建好后长这样:
项目结构.jpg
创建Action
插件可以自定义IDE的UI,在菜单或工具栏中新加入一个Item。SDK提供了一个类AnAction,这个类的actionPerformed方法在你每次在菜单栏中选中或在工具栏中点击对应项时都会被调用。创建一个Action只需要两步:
定义派生于AnAction的类
注册Action
当然你也可以定义一组派生于AnAction的类
定义Action
下面的代码是我仿照官方例子定义的一个Action,只是把Java改成了Kotlin实现
class TextBoxes : AnAction("Text _Boxes") {
override fun actionPerformed(e: AnActionEvent) {
val project = e.getData(PlatformDataKeys.PROJECT)//这个Project是不是很熟悉?它其实跟Gradle中的Project意义是一样的
val txt = Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon())
Messages.showMessageDialog(project, "Hello, $txt!\n I am glad to see you.", "Information", Messages.getInformationIcon())//这两段代码其实很简单,都不用解释了
}
}
注册Action
定义好Action之后当然就需要告知IDE你有哪些Action啦,所以就需要对这些Action进行注册,注册的方式有两种(是不是似曾相识的感觉?)。
在plugin.xml文件的
标签中进行注册
在代码中进行注册
在plugin.xml文件中进行注册
跟Android开发中在AndroidManifest.xml文件中注册组件非常相像,我们只需要按照IntelliJ平台的规范在plugin.xml文件的部分内容进行修改:
下面对plugin.xml的规范做一些介绍:
使用代码进行注册
使用代码注册其实也没什么少介绍的,贴一段官方代码大家就大致了解了,就是调用相应的api去做一些配置
public class MyPluginRegistration implements ApplicationComponent {
// Returns the component name (any unique string value).
@NotNull public String getComponentName() {
return "MyPlugin";
}
// If you register the MyPluginRegistration class in the section of
// the plugin.xml file, this method is called on IDEA start-up.
public void initComponent() {
ActionManager am = ActionManager.getInstance();
TextBoxes action = new TextBoxes();
// Passes an instance of your custom TextBoxes class to the registerAction method of the ActionManager class.
am.registerAction("MyPluginAction", action);
// Gets an instance of the WindowMenu action group.
DefaultActionGroup windowM = (DefaultActionGroup) am.getAction("WindowMenu");
// Adds a separator and a new menu command to the WindowMenu group on the main menu.
windowM.addSeparator();
windowM.add(action);
}
// Disposes system resources.
public void disposeComponent() {
}
}
上面两种注册方式是不是都感觉挺麻烦,在AS中我们创建一个Activity的时候可以通过File->New->Activity来帮我们创建一个Activity,并且已经帮我们注册到AndroidManifest.xml中,甚至是布局文件也创建好了,那么IDEA能做到吗?答案是肯定的,而且步骤也大同小异:
快速创建Action.jpg
接下来我们点击运行或Debug即可看到运行效果
运行效果1.jpg
运行效果2.jpg
运行效果3.jpg
到这里相信你也了解了怎么样去创建并运行一个简单的IDEA插件了,整个过程是不是和开发一个Android应用非常相像呢,其实都可以把他们看成是开发一个带UI界面的JVM应用程序,当你开发好一个插件之后,需要将其上传到远程仓库中以供他人使用,整个流程和发布一个第三方库也是大同小异。
IntelliJ IDEA/Android Studio插件开发入门指南
基于IntelliJ平台的产品都可以通过添加插件来丰富其原有的功能,JetBrains团队也我们提供了丰富的API来进行插件开发,所有的插件都可以在JetBrains Plugin Repository找到。常见的插件类型有:
自定义语言支持(如Java、Kotlin)
框架集成
工具集成
用户界面插件
这些类型插件的介绍以及功能就不一一细说了,官网也有比较详细的介绍。
简单来说,IDEA也好Android Studio也好(以下统一称为IDE),它们为插件提供了运行环境,通过各种插件的配合来实现不同的功能。下面就先介绍开发IDEA插件前需要哪些准备。
安装IDEA,如果想在开发插件的过程中进行Debug,那么还需要把IDEA的源码下载下来(Github源码地址)
配置IntelliJ Platform SDK,也就是开发插件所需的SDK,类似开发Android应用时需要Android SDK,并且插件都是运行在JVM上的,所以也需要配置JDK的路径
指定Sandbox Home目录,Sandbox Home目录用于存放插件项目实例的一些配置文件。在macOS系统中默认存放路径是/Users/{用户名}/Library/Caches/IdeaIC2018.2/plugins-sandbox
配置SDK,如果你把IDEA源码也下载了,那么还需要配置一下源码的路径
添加SDK.jpg
选择源码路径.jpg
环境搭建好了,那么接下来我们就创建一个简易的插件工程,依次点击File->New->Project然后在弹出框左栏选择Gradle,然后在右侧一栏勾选IntelliJ Platform Plugin(如果想要使用Kotlin进行开发就把Kotlin那一项也勾选上)
新建插件项目.jpg
项目创建好后长这样:
项目结构.jpg
创建Action
插件可以自定义IDE的UI,在菜单或工具栏中新加入一个Item。SDK提供了一个类AnAction,这个类的actionPerformed方法在你每次在菜单栏中选中或在工具栏中点击对应项时都会被调用。创建一个Action只需要两步:
定义派生于AnAction的类
注册Action
当然你也可以定义一组派生于AnAction的类
定义Action
下面的代码是我仿照官方例子定义的一个Action,只是把Java改成了Kotlin实现
class TextBoxes : AnAction("Text _Boxes") {
override fun actionPerformed(e: AnActionEvent) {
val project = e.getData(PlatformDataKeys.PROJECT)//这个Project是不是很熟悉?它其实跟Gradle中的Project意义是一样的
val txt = Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon())
Messages.showMessageDialog(project, "Hello, $txt!\n I am glad to see you.", "Information", Messages.getInformationIcon())//这两段代码其实很简单,都不用解释了
}
}
注册Action
定义好Action之后当然就需要告知IDE你有哪些Action啦,所以就需要对这些Action进行注册,注册的方式有两种(是不是似曾相识的感觉?)。
在plugin.xml文件的
标签中进行注册
在代码中进行注册
在plugin.xml文件中进行注册
跟Android开发中在AndroidManifest.xml文件中注册组件非常相像,我们只需要按照IntelliJ平台的规范在plugin.xml文件的部分内容进行修改:
下面对plugin.xml的规范做一些介绍:
使用代码进行注册
使用代码注册其实也没什么少介绍的,贴一段官方代码大家就大致了解了,就是调用相应的api去做一些配置
public class MyPluginRegistration implements ApplicationComponent {
// Returns the component name (any unique string value).
@NotNull public String getComponentName() {
return "MyPlugin";
}
// If you register the MyPluginRegistration class in the section of
// the plugin.xml file, this method is called on IDEA start-up.
public void initComponent() {
ActionManager am = ActionManager.getInstance();
TextBoxes action = new TextBoxes();
// Passes an instance of your custom TextBoxes class to the registerAction method of the ActionManager class.
am.registerAction("MyPluginAction", action);
// Gets an instance of the WindowMenu action group.
DefaultActionGroup windowM = (DefaultActionGroup) am.getAction("WindowMenu");
// Adds a separator and a new menu command to the WindowMenu group on the main menu.
windowM.addSeparator();
windowM.add(action);
}
// Disposes system resources.
public void disposeComponent() {
}
}
上面两种注册方式是不是都感觉挺麻烦,在AS中我们创建一个Activity的时候可以通过File->New->Activity来帮我们创建一个Activity,并且已经帮我们注册到AndroidManifest.xml中,甚至是布局文件也创建好了,那么IDEA能做到吗?答案是肯定的,而且步骤也大同小异:
快速创建Action.jpg
接下来我们点击运行或Debug即可看到运行效果
运行效果1.jpg
运行效果2.jpg
运行效果3.jpg
到这里相信你也了解了怎么样去创建并运行一个简单的IDEA插件了,整个过程是不是和开发一个Android应用非常相像呢,其实都可以把他们看成是开发一个带UI界面的JVM应用程序,当你开发好一个插件之后,需要将其上传到远程仓库中以供他人使用,整个流程和发布一个第三方库也是大同小异。
春游一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!
杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。