Estoy participando en el "Programa de Vela · Nuggets"
antecedentes
Como desarrolladores que usan IDEA/Android Studio, todos han usado complementos en mayor o menor medida. Con la actualización de la versión de las herramientas de desarrollo, muchos complementos tendrán problemas de compatibilidad y es posible que el autor haya detenido el mantenimiento hace algunos años.
Si podemos dominar algunos conocimientos de desarrollo de complementos y encontrar complementos que han dejado de mantener el mantenimiento, podemos mantenerlos automáticamente. Si tenemos algunas ideas, incluso podemos desarrollar complementos por nosotros mismos.
Actualmente, hay muy pocos tutoriales en línea sobre los complementos de IDEA, y algunos tutoriales son relativamente antiguos y muchas configuraciones han cambiado, por lo que planeo escribir algunos tutoriales sobre el desarrollo de complementos de IDEA, con la esperanza de ayudar a todos.
Este artículo es la primera parte del tutorial. A través de este artículo, puede crear un proyecto de complemento simple de HelloWorld, familiarizarse con el entorno de desarrollo de complemento de IDEA y comprender la estructura del proyecto de complemento de IDEA.
herramientas de desarrollo
Para desarrollar complementos de IDEA, debe descargar IDEA, la dirección de descarga: www.jetbrains.com/zh-cn/idea/… Elija la versión comunitaria gratuita.
Crear proyecto
Abra IDEA, haga clic en New Project
, luego seleccione IDE Plugin
, como se muestra a continuación
Ingrese la información relevante del proyecto de complemento y luego haga clic en el Create
botón para crear el proyecto. La estructura del proyecto es la siguiente:
DxyJsonToDart
├── .idea
│ └── .gitignore
│ └── gradle.xml
│ └── misc.xml
│ └── vcs.xml
├── .run
│ └── Run IDE with Plugin.run.xml
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ │ └── META-INF
│ │ └── plugin.xml
│ │ └── pluginIcon.svg
├── .gitignore
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
复制代码
Aquellos que han desarrollado proyectos de Android deben estar familiarizados con la estructura del proyecto, que es básicamente similar al proyecto de Android.Nuestro código estará escrito src/main/java/包名
en , que build.gradle.kts
es el archivo de configuración de Gradle y el archivo plugin.xml
de configuración del complemento. en desarrollo, a menudo nos comunicaremos con este Dos archivos de configuración para tratar.
Echemos un breve vistazo al archivo build.gradle.kts:
plugins {
id("java")
id("org.jetbrains.intellij") version "1.6.0"
}
group = "cn.dxy.app"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
intellij {
version.set("2021.3")
type.set("IC")
plugins.set(listOf(/* Plugin Dependencies */))
}
tasks {
withType<JavaCompile> {
sourceCompatibility = "11"
targetCompatibility = "11"
}
patchPluginXml {
sinceBuild.set("212")
untilBuild.set("223.*")
}
signPlugin {
certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv("PRIVATE_KEY"))
password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
}
publishPlugin {
token.set(System.getenv("PUBLISH_TOKEN"))
}
}
复制代码
这个文件中的配置信息具体是什么意思,后续会讲到,暂时先不管。这时我们什么代码没有写,直接运行项目,因为在上面配置了 version.set("2021.3")
,运行时会下载一个 2021.3 版本的 IDEA。这个 IDEA 大概有 1~2G 大小,下载成功后,这个 IDEA 会运行起来,运行结果如下图所示。
如果你切换到 Plugins 选项,你会发现我们开发的插件被自动安装到这个 IDEA 中了。
我第一次解除插件开发时有点蒙:一个 IDEA 运行启动了另外一个 IDEA。后来我才想通,因为我们的插件是要运行在 IDEA/Android Studio 中的,我们的插件适配不同的版本,还要进行代码调试,所以只能一个 IDEA 运行启动了另外一个 IDEA。
建议大家动手实践一下,会有更加直观的感受。
新建 Action
想一下我们平时是如何使用插件的,我们可能是右键点击了文件夹,或者是点击了某个菜单,这时会弹出一些选项,这些选项一般就是某个插件的入口,这些入口在 IDEA 插件中叫做 Action
。
下面我们写点代码,看看如何创建一个 Action
,在项目的代码包中,点击右键,New => Plugin DevKit => Action
,可以创建一个 Action
。
添加 Action 相关信息
在上图中,Add to Group 选择的是 Groups: NewGroup(New) Action: NewFile(File) Anchor: First,那么我们新建的这个 Action 就会出现在
New
这个选项中的第一个位置
点击确定按钮后,会新增一个继承 AnAction 的类 DxyJsonToDartAction
package cn.dxy.app.dxyjsontodart;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
public class DxyJsonToDartAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
}
}
复制代码
并且会在 plugin.xml 中新增这个 action
<actions>
<action id="DxyJsonToDart" class="cn.dxy.app.dxyjsontodart.DxyJsonToDartAction"
text="我是 name" description="我是 description">
<add-to-group group-id="NewGroup" anchor="first"/>
</action>
</actions>
复制代码
这时我们再运行插件,看看我们刚刚编写的代码有什么效果:
Después de que se inicie IDEA, abrimos un proyecto al azar, hacemos clic con el botón derecho en la carpeta y podemos ver que la opción del complemento que acabamos de desarrollar aparece en el New
menú .我是 name
Hacer referencia a otros complementos
Los complementos que escribimos pueden depender de otros complementos, y después de confiar en otros complementos, pueden usar sus clases
Documentación oficial: plugins.jetbrains.com/docs/intell…
Abra el archivo del proyecto build.gradle.kts y modifique el código en plugins.set() de la siguiente manera:
intellij {
version.set("2021.3")
type.set("IC") // Target IDE Platform
plugins.set(
listOf(
"Dart:213.5744.122", //https://plugins.jetbrains.com/plugin/6351-dart/versions
"io.flutter:63.2.4",//https://plugins.jetbrains.com/plugin/9212-flutter/versions/stable
"GsonFormatPlus:1.6.1",//https://plugins.jetbrains.com/plugin/14949-gsonformatplus/versions
"com.jack.plugin.autojson:1.5", //https://plugins.jetbrains.com/plugin/11600-autojson/versions
"com.crzsc.FlutterAssetsGenerator:2.0.0",//https://plugins.jetbrains.com/plugin/15427-flutterassetsgenerator/versions
"com.ruiyu.ruiyu:4.4.2", //https://plugins.jetbrains.com/plugin/11415-flutterjsonbeanfactory-only-null-safety-/versions
)
)
}
复制代码
Vuelva a ejecutar el proyecto. Después de que la operación sea exitosa, cambie a la opción Complemento, como se muestra en la siguiente figura:
Podemos ver que la IDEA que se ejecuta esta vez empaquetará e instalará todos los complementos presentados anteriormente.
Al final
Eso es todo por este tutorial. Si practica, creo que tendrá una comprensión general del desarrollo de complementos de IDEA.
Se introducirá más contenido en tutoriales posteriores.
Además, si te interesan esos aspectos, también puedes dejar un comentario, y si lo conozco, también lo compartiré.