diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56e9..b86273d94 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 992f124b9..5260ce2d2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,7 +41,7 @@ plugins { // https://plugins.gradle.org/plugin/org.jetbrains.kotlin.jvm id("java") // Java support id("org.jetbrains.intellij.platform") version "2.12.0" // IntelliJ Platform Gradle Plugin - id("org.jetbrains.kotlin.jvm") version "2.2.0" // Kotlin support + id("org.jetbrains.kotlin.jvm") version "2.3.20" // Kotlin support id("org.jetbrains.changelog") version "2.2.0" // Gradle Changelog Plugin id("org.jetbrains.kotlinx.kover") version "0.9.4" idea // IntelliJ IDEA support @@ -103,7 +103,7 @@ jvmVersion = when (javaVersion) { kotlin { compilerOptions { - apiVersion.set(KotlinVersion.KOTLIN_2_1) + apiVersion.set(KotlinVersion.KOTLIN_2_3) jvmTarget = jvmVersion } // This is how you specify the specific JVM requirements, this may be a requirement for the Starter test framework @@ -155,6 +155,23 @@ sourceSets { "resources" ) ) + + // TODO(helin24): Include these files when we go back to building against Android Studio. + java.exclude("**/AndroidStudioGradleSyncProvider.java") + java.exclude("**/GradleUtils.java") + java.exclude("**/FlutterExternalSystemTaskNotificationListener.java") + java.exclude("**/AndroidLocationProvider.java") + java.exclude("**/FlutterStudioStartupActivity.java") + java.exclude("**/OpenAndroidModule.java") + java.exclude("**/AddToAppUtils.java") + + kotlin.exclude("**/AndroidStudioGradleSyncProvider.java") + kotlin.exclude("**/GradleUtils.java") + kotlin.exclude("**/FlutterExternalSystemTaskNotificationListener.java") + kotlin.exclude("**/AndroidLocationProvider.java") + kotlin.exclude("**/FlutterStudioStartupActivity.java") + kotlin.exclude("**/OpenAndroidModule.java") + kotlin.exclude("**/AddToAppUtils.java") } test { java.srcDirs( @@ -202,7 +219,8 @@ dependencies { // https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#default-target-platforms // Android Studio versions can be found at: https://plugins.jetbrains.com/docs/intellij/android-studio-releases-list.html try { - androidStudio(ideaVersion) + // TODO(helin24): Go back to using Android Studio once 2026.1 is released. + intellijIdeaUltimate(ideaVersion) } catch (e: Exception) { throw GradleException( "Failed to resolve Android Studio / IDEA download URL. This is likely due to a network issue blocking the download URL. Please check your internet connection or VPN.", @@ -216,6 +234,7 @@ dependencies { // Plugin dependency documentation: // https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#plugins // https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html#project-setup + // TODO(helin24): Add back bundled plugins once we go back to building against Android Studio. bundledPlugins( immutableListOf( "com.intellij.java", @@ -223,14 +242,13 @@ dependencies { "JUnit", "Git4Idea", "org.jetbrains.kotlin", - "org.jetbrains.plugins.gradle", "org.jetbrains.plugins.yaml", "org.intellij.intelliLang", - "org.jetbrains.android", - "com.android.tools.idea.smali" ) ) plugin("Dart:$dartPluginVersion") + plugin("org.jetbrains.android:261.22158.277") + plugin("org.jetbrains.plugins.gradle:261.22158.182") if (sinceBuildInput == "243" || sinceBuildInput == "251") { bundledModule("intellij.platform.coverage") diff --git a/gradle.properties b/gradle.properties index 16dbccfb1..5c9a75dd2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,11 +4,11 @@ # found in the LICENSE file. # -ideaVersion=2025.2.3.9 +ideaVersion=2026.1 dartPluginVersion= 503.0.0 # Also update the versions for verify checks in tool/github.sh. -sinceBuild=251 -untilBuild=261.* +sinceBuild=261 +untilBuild=262.* javaVersion=21 kotlin.stdlib.default.dependency=false org.gradle.parallel=true @@ -16,3 +16,5 @@ org.gradle.jvmargs=-Xms1024m -Xmx4048m org.gradle.caching=true org.gradle.configuration-cache=true +# This is needed in 2026.1 for runIde to work. +token=dummy diff --git a/src/io/flutter/run/LaunchState.java b/src/io/flutter/run/LaunchState.java index 90a720a0b..d49040def 100644 --- a/src/io/flutter/run/LaunchState.java +++ b/src/io/flutter/run/LaunchState.java @@ -40,6 +40,7 @@ import com.intellij.xdebugger.XDebugProcessStarter; import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.XDebuggerManager; +import com.intellij.xdebugger.XSessionStartedResult; import com.jetbrains.lang.dart.ide.runner.DartExecutionHelper; import com.jetbrains.lang.dart.util.DartUrlResolver; import io.flutter.FlutterConstants; @@ -224,28 +225,30 @@ protected void showNoDeviceConnectedMessage(Project project) { } @NotNull - protected XDebugSession createDebugSession(@NotNull final ExecutionEnvironment env, - @NotNull final FlutterApp app, - @NotNull final ExecutionResult executionResult) + protected XSessionStartedResult createDebugSession(@NotNull final ExecutionEnvironment env, + @NotNull final FlutterApp app, + @NotNull final ExecutionResult executionResult) throws ExecutionException { final DartUrlResolver resolver = DartUrlResolver.getInstance(env.getProject(), sourceLocation); final FlutterPositionMapper mapper = createPositionMapper(env, app, resolver); final XDebuggerManager manager = XDebuggerManager.getInstance(env.getProject()); - final XDebugSession session = manager.startSession(env, new XDebugProcessStarter() { + final XSessionStartedResult startedResult = manager.newSessionBuilder(new XDebugProcessStarter() { @Override @NotNull public XDebugProcess start(@NotNull final XDebugSession session) { return new FlutterDebugProcess(app, env, session, executionResult, resolver, mapper); } - }); + }).environment(env).startSession(); + + final XDebugSession session = startedResult.getSession(); if (app.getMode() != RunMode.DEBUG) { session.setBreakpointMuted(true); } - return session; + return startedResult; } @NotNull diff --git a/src/io/flutter/run/bazelTest/BazelTestRunner.java b/src/io/flutter/run/bazelTest/BazelTestRunner.java index 7ffa75c51..21360f6aa 100644 --- a/src/io/flutter/run/bazelTest/BazelTestRunner.java +++ b/src/io/flutter/run/bazelTest/BazelTestRunner.java @@ -37,6 +37,7 @@ import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.XDebuggerManager; import com.jetbrains.lang.dart.sdk.DartSdkLibUtil; +import com.intellij.xdebugger.XSessionStartedResult; import com.jetbrains.lang.dart.util.DartUrlResolver; import io.flutter.FlutterMessages; import io.flutter.FlutterUtils; @@ -100,15 +101,15 @@ protected RunContentDescriptor runInDebugger(@NotNull BazelTestLaunchState launc // Create the debug session. final XDebuggerManager manager = XDebuggerManager.getInstance(env.getProject()); - final XDebugSession session = manager.startSession(env, new XDebugProcessStarter() { + final XSessionStartedResult result = manager.newSessionBuilder(new XDebugProcessStarter() { @Override @NotNull public XDebugProcess start(@NotNull final XDebugSession session) { return new BazelTestDebugProcess(env, session, executionResult, resolver, connector, mapper); } - }); + }).environment(env).startSession(); - return session.getRunContentDescriptor(); + return result.getRunContentDescriptor(); } /** diff --git a/src/io/flutter/run/test/FlutterTestRunner.java b/src/io/flutter/run/test/FlutterTestRunner.java index 55c8b1ee7..857bcdcc7 100644 --- a/src/io/flutter/run/test/FlutterTestRunner.java +++ b/src/io/flutter/run/test/FlutterTestRunner.java @@ -32,6 +32,7 @@ import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.XDebuggerManager; import com.jetbrains.lang.dart.util.DartUrlResolver; + import io.flutter.FlutterUtils; import io.flutter.ObservatoryConnector; import io.flutter.logging.PluginLogger; @@ -210,15 +211,15 @@ protected RunContentDescriptor runInDebugger(@NotNull TestLaunchState launcher, // Create the debug session. final XDebuggerManager manager = XDebuggerManager.getInstance(env.getProject()); - final XDebugSession session = manager.startSession(env, new XDebugProcessStarter() { + final var result = manager.newSessionBuilder(new XDebugProcessStarter() { @Override @NotNull public XDebugProcess start(@NotNull final XDebugSession session) { return new TestDebugProcess(env, session, executionResult, resolver, connector, mapper); } - }); + }).environment(env).startSession(); - return session.getRunContentDescriptor(); + return result.getRunContentDescriptor(); } /**