diff --git a/packages/devtools_extensions/example/app_that_uses_foo/.gitignore b/packages/devtools_extensions/example/app_that_uses_foo/.gitignore
index 24476c5d1eb..6c319542b34 100644
--- a/packages/devtools_extensions/example/app_that_uses_foo/.gitignore
+++ b/packages/devtools_extensions/example/app_that_uses_foo/.gitignore
@@ -5,9 +5,11 @@
*.swp
.DS_Store
.atom/
+.build/
.buildlog/
.history
.svn/
+.swiftpm/
migrate_working_dir/
# IntelliJ related
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/analysis_options.yaml b/packages/devtools_extensions/example/app_that_uses_foo/analysis_options.yaml
new file mode 100644
index 00000000000..0d2902135ca
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/analysis_options.yaml
@@ -0,0 +1,28 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at https://dart.dev/lints.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/.gitignore b/packages/devtools_extensions/example/app_that_uses_foo/android/.gitignore
new file mode 100644
index 00000000000..be3943c96d8
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/.gitignore
@@ -0,0 +1,14 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+.cxx/
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/to/reference-keystore
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/build.gradle.kts b/packages/devtools_extensions/example/app_that_uses_foo/android/app/build.gradle.kts
new file mode 100644
index 00000000000..ee629f72d13
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/build.gradle.kts
@@ -0,0 +1,44 @@
+plugins {
+ id("com.android.application")
+ id("kotlin-android")
+ // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+ id("dev.flutter.flutter-gradle-plugin")
+}
+
+android {
+ namespace = "com.example.app_that_uses_foo"
+ compileSdk = flutter.compileSdkVersion
+ ndkVersion = flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_11.toString()
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId = "com.example.app_that_uses_foo"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://flutter.dev/to/review-gradle-config.
+ minSdk = flutter.minSdkVersion
+ targetSdk = flutter.targetSdkVersion
+ versionCode = flutter.versionCode
+ versionName = flutter.versionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig = signingConfigs.getByName("debug")
+ }
+ }
+}
+
+flutter {
+ source = "../.."
+}
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/debug/AndroidManifest.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 00000000000..399f6981d5d
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/AndroidManifest.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..a57aa6e524c
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/kotlin/com/example/app_that_uses_foo/MainActivity.kt b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/kotlin/com/example/app_that_uses_foo/MainActivity.kt
new file mode 100644
index 00000000000..7543097172c
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/kotlin/com/example/app_that_uses_foo/MainActivity.kt
@@ -0,0 +1,5 @@
+package com.example.app_that_uses_foo
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity : FlutterActivity()
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 00000000000..f74085f3f6a
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable/launch_background.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 00000000000..304732f8842
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000000..db77bb4b7b0
Binary files /dev/null and b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000000..17987b79bb8
Binary files /dev/null and b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000000..09d4391482b
Binary files /dev/null and b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000000..d5f1c8d34e7
Binary files /dev/null and b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000000..4d6372eebdb
Binary files /dev/null and b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values-night/styles.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 00000000000..06952be745f
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values/styles.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values/styles.xml
new file mode 100644
index 00000000000..cb1ef88056e
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/profile/AndroidManifest.xml b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 00000000000..399f6981d5d
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/build.gradle.kts b/packages/devtools_extensions/example/app_that_uses_foo/android/build.gradle.kts
new file mode 100644
index 00000000000..dbee657bb5b
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/build.gradle.kts
@@ -0,0 +1,24 @@
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+val newBuildDir: Directory =
+ rootProject.layout.buildDirectory
+ .dir("../../build")
+ .get()
+rootProject.layout.buildDirectory.value(newBuildDir)
+
+subprojects {
+ val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
+ project.layout.buildDirectory.value(newSubprojectBuildDir)
+}
+subprojects {
+ project.evaluationDependsOn(":app")
+}
+
+tasks.register("clean") {
+ delete(rootProject.layout.buildDirectory)
+}
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/gradle.properties b/packages/devtools_extensions/example/app_that_uses_foo/android/gradle.properties
new file mode 100644
index 00000000000..f018a61817f
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/gradle/wrapper/gradle-wrapper.properties b/packages/devtools_extensions/example/app_that_uses_foo/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000000..ac3b47926ee
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/android/settings.gradle.kts b/packages/devtools_extensions/example/app_that_uses_foo/android/settings.gradle.kts
new file mode 100644
index 00000000000..92715c434c0
--- /dev/null
+++ b/packages/devtools_extensions/example/app_that_uses_foo/android/settings.gradle.kts
@@ -0,0 +1,26 @@
+pluginManagement {
+ val flutterSdkPath =
+ run {
+ val properties = java.util.Properties()
+ file("local.properties").inputStream().use { properties.load(it) }
+ val flutterSdkPath = properties.getProperty("flutter.sdk")
+ require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
+ flutterSdkPath
+ }
+
+ includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+plugins {
+ id("dev.flutter.flutter-plugin-loader") version "1.0.0"
+ id("com.android.application") version "8.7.3" apply false
+ id("org.jetbrains.kotlin.android") version "2.1.0" apply false
+}
+
+include(":app")
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/ios/Flutter/AppFrameworkInfo.plist b/packages/devtools_extensions/example/app_that_uses_foo/ios/Flutter/AppFrameworkInfo.plist
index 7c569640062..1dc6cf7652b 100644
--- a/packages/devtools_extensions/example/app_that_uses_foo/ios/Flutter/AppFrameworkInfo.plist
+++ b/packages/devtools_extensions/example/app_that_uses_foo/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 12.0
+ 13.0
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/project.pbxproj b/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/project.pbxproj
index 9bce865e42c..04f6b9b7431 100644
--- a/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/project.pbxproj
@@ -453,7 +453,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -581,7 +581,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -630,7 +630,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
diff --git a/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 8e3ca5dfe19..e3773d42e24 100644
--- a/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/packages/devtools_extensions/example/app_that_uses_foo/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">