跳到主要内容

创建一个最简DevEco插件

本文将创建一个最简单的DevEco IDE插件。从创建到开发,最后安装运行。这个插件是右侧窗口,类似于Previewer窗口

helloworld

演示所用开发环境配置

因为DevEco编辑器是基于IDEA开发的,所以开发插件我们用IDEA

DevEco Studio是DevEco Studio 6.0.0 Release

IDEA版本是IntelliJ IDEA 2025.2.5 (Community Edition)

打开IntelliJ IDEA,打开Settings->Plugins->Marketplace 搜索devkit,下载安装插件:Plugin DevKit

演示电脑是:MacBook Pro(M1)

创建插件工程

我们将使用kotlin开发插件

  • 打开IntelliJ IDEA, File->Project Structure...->Platform Settings->SDKS,点击加号创建新的JDK,选择下载JDK(Version:21,Vendor:JetBrains Runtime 21.0.9)

  • 打开IntelliJ IDEA->New Project,因为安装了Plugin DevKit 插件,所以左边有IDE Plugin选项,设置JDK为上面下载的jbr-21,其他信息随便填即可

  • 修改build.gradle.kts 中的sinceBuild = "243",把整个tasks删除

最终文件内容:

plugins {
id("java")
id("org.jetbrains.kotlin.jvm") version "2.1.0"
id("org.jetbrains.intellij.platform") version "2.7.1"
}

group = "com.hehuoya"
version = "1.0-SNAPSHOT"

repositories {
mavenCentral()
intellijPlatform {
defaultRepositories()
}
}

// Configure IntelliJ Platform Gradle Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html
dependencies {
intellijPlatform {
create("IC", "2025.1.4.1")
testFramework(org.jetbrains.intellij.platform.gradle.TestFrameworkType.Platform)
}
}

intellijPlatform {
pluginConfiguration {
ideaVersion {
sinceBuild = "243"
}

changeNotes = """
Initial version
""".trimIndent()
}
}

kotlin {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21)
}
}

直接运行会先自动下载一个调试用的idea,然后会自动打开idea,我们用这个idea随便创建一个java项目,进入设置,查看已安装插件,会看到我们的插件已经安装在里面了。

我们写一个简单插件,能看到页面效果

创建文件:src/main/kotlin/FirstToolWindow.kt,内容如下:

import ai.grazie.utils.json.JSONObject
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ToolWindowFactory
import com.intellij.ui.JBColor
import com.intellij.ui.content.ContentFactory
import java.awt.Font
import javax.swing.JLabel
import javax.swing.JPanel
import kotlin.apply

class FirstToolWindow: ToolWindowFactory {

override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) {
val factory = ContentFactory.getInstance()
// 第一个面板
createPanel("Hello cooder.fun", "tab1", JBColor.BLUE, false, factory, toolWindow)

// 第二个面板
createPanel("Hello hehuoya.com", "tab2", JBColor.RED, true, factory, toolWindow)
}

private fun JSONObject.getJSONArray(string: String) {}

private fun createPanel(
text: String,
displayName: String,
color: JBColor,
isLockable: Boolean,
factory: ContentFactory,
toolWindow: ToolWindow
) {
val panel = JPanel()
val label = JLabel(text).apply {
font = Font("宋体", Font.BOLD, 32)
foreground = color
}
panel.add(label)
val content = factory.createContent(panel, displayName, isLockable)
toolWindow.contentManager.addContent(content)
}
}

最后一个比较重要的文件是/src/main/resources/META-INF/plugin.xml 修改里面的extensions节点内容:

<extensions defaultExtensionNs="com.intellij">
<toolWindow
factoryClass="FirstToolWindow"
id="cooder-right"
canCloseContents="false"
anchor="right"
icon="AllIcons.Actions.GeneratedFolder">
</toolWindow>
</extensions>

运行效果如上图

构建发布插件

》点击 idea上面的Build->Build Project,成功后在build/libs下面就是安装包

打开DevEco编辑器,打开设置->Plugins->Installed 右边有个设置按钮,点一下选择Install Plugin from Disk,选择我们刚才编译好的插件即可安装成功

安装完成后随便打开一个工程即可看到右侧贴边的插件

后续

接下来就是了解kotlin/java的UI开发了,主要了解awt和swing