Skip to content

[AGP 9.1.0 Migration #4] Replace plugin build-type copy with initWith on public DSL - #191606

Merged
auto-submit[bot] merged 1 commit into
flutter:masterfrom
reidbaker-agent:agp-plugin-buildtypes
Aug 28, 2026
Merged

auto-submit[bot] merged 1 commit into
flutter:masterfrom
reidbaker-agent:agp-plugin-buildtypes

Conversation

@reidbaker-agent

@reidbaker-agent reidbaker-agent commented Aug 24, 2026 •

Copy link
Copy Markdown
Contributor

This is PR 4 of 11 in the AGP 9.1.0 / public gradle-api / newdsl migration stack.

There are no breaking changes expected in this pr. Only internal logic is impacted.

I will be honest I also found the tests hard to review. I had the agent pull out shared mocking logic but I am not sure that actually made review easier.

Depends on #191218 (PR 3).


Standard review context for this pr stack

This is PR is part of an 11 pr stack to migrate the "newdsl" gradle-api specifically in agp 9.1.0.

All of the code was LLM authored. A mix of manual prompting, automatic prompting, several models and adversarial review. The combined sessions are enough that I cannot include relevant prompts like I have been doing on other prs.

If you want to review the pr stack you can find it here. These prs will be abandoned/closed as prs land into flutter/flutter.

  1. Add AGP public-API migration docs (contributor doc + breaking-change page draft) reidbaker-agent/flutter#1 (branch: agp-api-doc)
  2. Remove AGP-internal imports from VersionFetcher and migrate compileSdk/ndk reads to the public DSL reidbaker-agent/flutter#2 (branch: agp-internal-utils)
  3. Add public buildModeFor overloads and wire Flutter dependencies through the new DSL reidbaker-agent/flutter#3 (branch: agp-buildmode-deps)
  4. Replace the plugin build-type copy with initWith on the public DSL reidbaker-agent/flutter#4 (branch: agp-plugin-buildtypes)
  5. Delete getLegacyAndroidExtension and migrate the NDK fallback to the public DSL reidbaker-agent/flutter#5 (branch: agp-ndk-fallback)
  6. Register the Flutter compile task lazily from the variant API for app projects reidbaker-agent/flutter#6 (branch: agp-assets-onvariants)
  7. Migrate the flutter-apk copy and per-ABI versionCode to the variant API reidbaker-agent/flutter#7 (branch: agp-apk-copy-versioncode)
  8. Unify add-to-app module wiring on the variant API and drop host-project cross-wiring reidbaker-agent/flutter#8 (branch: agp-add-to-app)
  9. Move aar_init_script off legacy AGP APIs reidbaker-agent/flutter#9 (branch: agp-aar-script)
  10. Flip the newDsl default: drop the opt-out from templates and migrate it away reidbaker-agent/flutter#10 (branch: agp-newdsl-flip)
  11. Compile the Flutter Gradle Plugin against the gradle-api artifact only reidbaker-agent/flutter#11 (branch: agp-gradle-api)

This work is urgent in the sense that we are worried that android will publish agp 10 with no opt out but not so urgent that we are willing to break flutter users because we didn't review or understand the code because we were in a rush.

Breaking changes are expected as part of this work. There are patterns the android team explicitly does not want apps to use and apis that have no equivalent.

As part of the effort to ensure this work does not slip into ai slop, prs from this stack will be reviewed by me (@reidbaker) before asking for review. Then we will have 2 android expert reviewers also review every pr.


Agent authored description.
This is PR 4 of 11 in the AGP 9.1.0 / public gradle-api migration stack (#180137, #166550).

Key Changes

  • Public DSL initWith Copy: Replaces the legacy getLegacyAndroidExtension build-type copy in PluginHandler with initWith on the public DSL (AgpCommonExtensionWrapper.buildTypes). Missing build types on the plugin project are created with initWith(appBuildType), and isDebuggable is copied when both sides are ApplicationBuildType.
  • Zero AGP Internals in Production Sources: Removes the last remaining com.android.build.gradle.internal imports from production code (src/main).
  • Internal AGP Import Guard: Adds InternalAgpApiImportTest to continuously enforce that production sources do not introduce com.android.build.gradle.internal.* imports.
  • Decomposed & Robust Unit Tests: Replaces legacy mock-only tests in PluginHandlerTest with tests that execute configurePlugins and verify initWith copying for both library and application plugin projects, mapping custom debuggable build types to debug engine artifacts, and verifying that pre-existing plugin build types are skipped.
  • Migration Documentation Update: Adds details for the P3 pre-spike and finalizeDsl fallback in Migrating-Flutter-Gradle-Plugin-to-AGP-public-API.md.

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

@reidbaker
reidbaker force-pushed the agp-plugin-buildtypes branch from 4aa474b to 9ad1211 Compare August 24, 2026 19:56
@reidbaker reidbaker added the CICD Run CI/CD label Aug 24, 2026
@github-actions github-actions Bot added platform-android Android applications specifically tool Affects the "flutter" command-line tool. See also t: labels. team-android Owned by Android platform team d: docs/ flutter/flutter/docs, for contributors labels Aug 24, 2026
@reidbaker
reidbaker force-pushed the agp-plugin-buildtypes branch from 9ad1211 to f678456 Compare August 24, 2026 20:06
@flutter-dashboard flutter-dashboard Bot removed the CICD Run CI/CD label Aug 24, 2026
@reidbaker
reidbaker force-pushed the agp-plugin-buildtypes branch 2 times, most recently from 20c1a4c to 5010702 Compare August 25, 2026 16:52
@github-actions github-actions Bot removed the team-android Owned by Android platform team label Aug 25, 2026
signal (the library-plugin build-type copy in `PluginHandler`). This
preserves add-to-app custom-debuggable matching (a host `staging`
debuggable build type maps to debug engine artifacts).
6. **P3 pre-spike / PR 4 (afterEvaluate DSL mutation under newDsl).** The planned scratch-app

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What purpose does this planning doc serve now that the work is done. Do any future prs in the 11 pr stack reference P3?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This design/migration doc serves as the persistent architectural record for the AGP 9 public API migration (#180137) documenting why specific public API approaches (like initWith, AgpCommonExtensionWrapper, and onVariants) were chosen and how edge cases (like finalizeDsl fallback) are handled. Future PRs in the stack (PR 10 and PR 11) reference this document for the complete migration context.

Comment on lines +150 to +155
// Copy the app project's build types onto the plugin project so that its variants
// resolve. These are `initWith` copies, not live aliases: `initWith` copies the
// properties both build types understand (matchingFallbacks included), and
// app-specific properties are additionally copied when both sides are application
// build types. Library build types cannot receive app-specific properties (such
// as isDebuggable) through the public DSL.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the point of this work to help libraries handle the migration with fewer breaking changes? If so can you give an example? Or maybe is this a carry over from supporting flavors. Either way I dont understand why this change is needed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Gradle / AGP, when an app defines custom build types (e.g. staging, profile_qa), Gradle variant matching requires plugin library subprojects (e.g. :camera_android) to define matching build types or compatible matchingFallbacks. Because Flutter plugins are authored independently and only define debug and release, building an app with custom build types would fail variant resolution without this copy step.

copyAppBuildTypesToPlugin copies missing build types from the app to the plugin project. This PR migrates that copy logic away from internal AGP types (com.android.build.gradle.internal.dsl.BuildType) to the public DSL create(name) { initWith(appBuildType) }.

}
val pluginProject: Project = project.rootProject.findProject(":$pluginName") ?: return

// Warning: Iterating buildTypes causes the project-level 'implementation' dependency to be added multiple times.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this comment because it came up in adversarial review but was unrelated to the change in this pr.

val dependencyProject =
project.rootProject.findProject(":$pluginDependencyName") ?: return@innerForEach
pluginProject.afterEvaluate {
// this.dependencies.add("implementation", dependencyProject)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentional removal of dead code.

action.execute(createdBuildType)
createdBuildType
}
pluginProjectBuildTypes.create("staging", capture(createActionSlot))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this test moved from debug to staging? why?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In AGP, standard projects already have debug and release build types created by default. Using a custom build type like staging cleanly tests the behavior of creating a missing custom build type from the app on the plugin project without colliding with default build types. (A separate test at line 282 explicitly verifies that pre-existing build types are skipped).

verify { pluginProject.afterEvaluate(capture(capturePluginActionSlot)) }
capturePluginActionSlot.forEach { it.execute(pluginProject) }

// For library plugins, individual missing build types must be created explicitly rather than bulk-copied.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this comment no longer valuable or correct?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old comment was contrasting legacy addAll (for app plugins) with manual property copying (for library plugins). In the new implementation, both app and library plugins use the unified public create(name) { initWith(appBuildType) } mechanism. Detailed KDoc explaining the initWith copy semantics across library and application build types is documented directly in PluginHandler.kt.

)

verify { pluginProject.afterEvaluate(capture(capturePluginActionSlot)) }
capturePluginActionSlot[0].execute(pluginProject)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change from using the first to a list?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PluginHandler.configurePlugins registers multiple afterEvaluate callbacks on pluginProject (e.g. for plugin dependencies and embedding dependencies). Executing only capturePluginActionSlot[0] left subsequent registered actions unexecuted in the test, making the test brittle to callback registration ordering. Using capturePluginActionSlot.forEach { it.execute(pluginProject) } ensures that all registered lifecycle actions are executed.

}

val container = mockk<NamedDomainObjectContainer<ApplicationBuildType>>()
val container = mockk<NamedDomainObjectContainer<ApplicationBuildType>>(relaxed = true)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is relaxed needed here? does it avoid a lot of setup? if not can we remove it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed relaxed = true. The mock container now explicitly stubs findByName (returning matching build types from the list or null) and create (executing configuration actions), providing realistic container semantics without relaxed mocks.


/**
* Guards the AGP public-API migration (https://github.com/flutter/flutter/issues/180137):
* production sources must not use AGP internals. AGP 10 removes access to internals

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AGP 10 is not published so we can not say that it removes access to internals.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is similar to packages/flutter_tools/gradle/src/test/kotlin/BytecodeValidatorTest.kt

I think we should put all the test that help enforce that our flutter gradle plugin code follows the right imports into their own folder that is different from code that verifies that the flutter gradle plugin code works the way we expect.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the KDoc and assertions to avoid speculative claims about unpublished AGP versions, framing the rule around ensuring FGP production code uses the public AGP DSL surface and is ready to compile against the public gradle-api artifact.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved InternalAgpApiImportTest.kt into packages/flutter_tools/gradle/src/test/kotlin/validation/ (package com.flutter.gradle.validation). Relocating pre-existing tests like BytecodeValidatorTest.kt can be done in a dedicated cleanup PR to keep downstream PR rebases clean.

@reidbaker
reidbaker force-pushed the agp-plugin-buildtypes branch 3 times, most recently from 6474d60 to b236996 Compare August 25, 2026 23:36
…With on the public DSL

- PluginHandler no longer imports com.android.build.gradle.internal.dsl.BuildType.
  The build-type copy block that shared live legacy BuildType instances
  (addAll) for app-type plugin projects and hand-copied two properties
  for library plugin projects is replaced by a single initWith-based
  copy on the public DSL containers: missing build types are created on
  the plugin project with initWith(appBuildType) (which carries
  matchingFallbacks), and isDebuggable is additionally copied when both
  sides are application build types. Library build types cannot receive
  app-specific properties through the public DSL - this is a documented
  behavior change of the migration.
- Production sources are now free of com.android.build.gradle.internal
  imports; InternalAgpApiImportTest locks that in.
- PluginHandlerTest: replaced legacy mock-only copy tests with tests
  that run configurePlugins and assert the initWith copy for both library
  and app plugin projects, including the custom-debuggable-build-type ->
  debug engine artifact mapping and skipping pre-existing build types.
- Updated documentation with P3 pre-spike and finalizeDsl fallback details.
@reidbaker
reidbaker force-pushed the agp-plugin-buildtypes branch from b236996 to 85e9f2b Compare August 25, 2026 23:38
@reidbaker
reidbaker marked this pull request as ready for review August 25, 2026 23:41
@reidbaker
reidbaker requested a review from a team as a code owner August 25, 2026 23:41
@reidbaker
reidbaker requested review from gmackall and mboetger and removed request for a team August 25, 2026 23:41
@reidbaker reidbaker added the CICD Run CI/CD label Aug 25, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request migrates the Flutter Gradle Plugin's build type copying logic to use the public Android Gradle Plugin (AGP) DSL instead of internal AGP APIs. It introduces copyAppBuildTypesToPlugin in PluginHandler to copy app build types to plugin projects using initWith and public DSL properties, removing legacy extension utilities. Unit tests are updated to mock the public ApplicationExtension and LibraryExtension APIs, and a new architectural test InternalAgpApiImportTest is added to prevent future imports of AGP internal packages in production code. I have no feedback to provide as there are no review comments.

@reidbaker

Copy link
Copy Markdown
Contributor

@reidbaker-agent can you respond to this comment with an integration test that already exists in the flutter codebase that executes the code path modified in this pr? Or if one does not exist say that.

@reidbaker-agent

Copy link
Copy Markdown
Contributor Author

@reidbaker Yes, several integration tests in the Flutter repository execute this code path (PluginHandler.kt / copyAppBuildTypesToPlugin / configurePlugins):

  1. packages/flutter_tools/test/integration.shard/android_plugin_example_app_build_test.dart:

    • Generates Android plugins (--template=plugin and --template=plugin_ffi) and runs an end-to-end flutter build apk on the example app containing the plugin subproject.
    • During Gradle project evaluation, PluginHandler.configurePlugins and copyAppBuildTypesToPlugin are executed to copy build types from the host app to the plugin library subproject.
  2. dev/devicelab/bin/tasks/plugin_test_android_standard.dart (runs on CI builders Linux plugin_test_android_standard, Mac plugin_test_android_standard, Windows plugin_test_android_standard):

    • Generates Java and Kotlin Android plugins and runs flutter build apk on the test host apps, executing PluginHandler across Gradle evaluation.
  3. packages/flutter_tools/test/integration.shard/android_run_flutter_gradle_plugin_tests_test.dart:

    • Executes the Flutter Gradle Plugin test suite (including PluginHandlerTest) inside real Gradle runner daemons against both the AGP 8.11.1 and AGP 9.1.0 lines.
  4. Other integration tests that build apps with plugins:

    • packages/flutter_tools/test/integration.shard/android_plugin_compilesdkversion_mismatch_test.dart
    • packages/flutter_tools/test/integration.shard/android_plugin_ndkversion_mismatch_test.dart
    • packages/flutter_tools/test/integration.shard/android_plugin_new_output_dir_test.dart

@reidbaker-agent

Copy link
Copy Markdown
Contributor Author

For custom build types and product flavors, the following integration and DeviceLab tests specifically cover these workflows:

  1. dev/devicelab/bin/tasks/module_host_with_custom_build_test.dart:

    • Uses fixture project dev/integration_tests/module_host_with_custom_build_v2_embedding/app/build.gradle.
    • Explicitly defines custom build types (staging with initWith debug / matchingFallbacks += 'debug', and prod with initWith release) along with product flavors (demo in dimension "version").
    • Builds host application variants across custom build types and flavors (assembleDemoDebug, assembleDemoStaging, assembleDemoProd).
  2. dev/devicelab/bin/tasks/flavors_test.dart:

    • Uses fixture project dev/integration_tests/flavors/android/app/build.gradle.
    • Defines product flavors free and paid in dimension "mode".
    • Tests flutter run --flavor paid and flutter install --debug --flavor paid on Android devices.
  3. dev/devicelab/bin/tasks/gradle_plugin_bundle_test.dart & gradle_plugin_light_apk_test.dart:

    • Tests flutter build appbundle --flavor production, flutter build appbundle --flavor=flavor_underscore, and ./gradlew assembleFreeDebug.

How this relates to PR 4: When an app defines both product flavors (e.g. paid, free) and custom build types (e.g. staging), AGP generates combined variant targets (e.g. paidStaging). Because third-party plugins only define debug and release, Gradle variant matching requires the plugin subproject to match the build type dimension (staging). copyAppBuildTypesToPlugin copies the custom staging build type to the plugin subprojects via create("staging") { initWith(appBuildType) }, allowing flavored variants with custom build types to resolve plugin dependencies cleanly.

@reidbaker reidbaker added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 28, 2026
@auto-submit
auto-submit Bot added this pull request to the merge queue Aug 28, 2026
Merged via the queue into flutter:master with commit f051143 Aug 28, 2026
31 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Aug 28, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request Aug 30, 2026
flutter/flutter@8d8c1aa...c978386

2026-08-30 [email protected] Roll Skia from ce359c7fbfe6 to 588b550a4dd8 (1 revision) (flutter/flutter#192040)
2026-08-30 [email protected] Roll Skia from 3ae8e3d1e335 to ce359c7fbfe6 (1 revision) (flutter/flutter#192037)
2026-08-30 [email protected] Roll Fuchsia Linux SDK from J123CwfDPYyVDpkMl... to o9DikEfRoFyVK3LKD... (flutter/flutter#192031)
2026-08-29 [email protected] Make the AbsorbPointer sample show the difference from IgnorePointer (flutter/flutter#188940)
2026-08-29 [email protected] Roll Dart SDK from 391ff83cd1d3 to 76abdf94faa8 (1 revision) (flutter/flutter#192021)
2026-08-29 [email protected] Roll Skia from b392fb672d13 to 3ae8e3d1e335 (1 revision) (flutter/flutter#192020)
2026-08-29 [email protected] Roll Skia from 0b4249b26b38 to b392fb672d13 (6 revisions) (flutter/flutter#192016)
2026-08-29 [email protected] Fixes for texture-backed gradients (flutter/flutter#191925)
2026-08-29 [email protected] Roll Dart SDK from ae63a6eca3f1 to 391ff83cd1d3 (3 revisions) (flutter/flutter#192010)
2026-08-29 [email protected] Fix Android license detection for cmdline-tools 23.0+ (flutter/flutter#191554)
2026-08-29 [email protected] [flutter_tools] Pause web server requests until initial compilation finishes (flutter/flutter#191990)
2026-08-28 [email protected] fix(workflow): Mac Verify Binaries needs `Linux mac_android_aot_engine` (flutter/flutter#191999)
2026-08-28 [email protected] Roll Fuchsia Linux SDK from dDxH8G5cDBP602eyG... to J123CwfDPYyVDpkMl... (flutter/flutter#191984)
2026-08-28 [email protected] Update scheduled workflow for more tasks, add goldctl update (flutter/flutter#191991)
2026-08-28 [email protected] Update no-main-prs to leave a comment (flutter/flutter#191973)
2026-08-28 [email protected] [AGP 9.1.0 Migration #4] Replace plugin build-type copy with initWith on public DSL (flutter/flutter#191606)
2026-08-28 [email protected] Roll Skia from fe0b9a5261f9 to 0b4249b26b38 (1 revision) (flutter/flutter#191974)
2026-08-28 [email protected] [UIScene] Migrate dev/benchmarks/macrobenchmarks to UIScene lifecycle (flutter/flutter#191648)
2026-08-28 [email protected] Uiscene migrate remaining apps (flutter/flutter#191652)
2026-08-28 [email protected] [tool] Migrate SymbolizeCommand to modular dependency injection (flutter/flutter#190744)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…r#12693)

flutter/flutter@8d8c1aa...c978386

2026-08-30 [email protected] Roll Skia from ce359c7fbfe6 to 588b550a4dd8 (1 revision) (flutter/flutter#192040)
2026-08-30 [email protected] Roll Skia from 3ae8e3d1e335 to ce359c7fbfe6 (1 revision) (flutter/flutter#192037)
2026-08-30 [email protected] Roll Fuchsia Linux SDK from J123CwfDPYyVDpkMl... to o9DikEfRoFyVK3LKD... (flutter/flutter#192031)
2026-08-29 [email protected] Make the AbsorbPointer sample show the difference from IgnorePointer (flutter/flutter#188940)
2026-08-29 [email protected] Roll Dart SDK from 391ff83cd1d3 to 76abdf94faa8 (1 revision) (flutter/flutter#192021)
2026-08-29 [email protected] Roll Skia from b392fb672d13 to 3ae8e3d1e335 (1 revision) (flutter/flutter#192020)
2026-08-29 [email protected] Roll Skia from 0b4249b26b38 to b392fb672d13 (6 revisions) (flutter/flutter#192016)
2026-08-29 [email protected] Fixes for texture-backed gradients (flutter/flutter#191925)
2026-08-29 [email protected] Roll Dart SDK from ae63a6eca3f1 to 391ff83cd1d3 (3 revisions) (flutter/flutter#192010)
2026-08-29 [email protected] Fix Android license detection for cmdline-tools 23.0+ (flutter/flutter#191554)
2026-08-29 [email protected] [flutter_tools] Pause web server requests until initial compilation finishes (flutter/flutter#191990)
2026-08-28 [email protected] fix(workflow): Mac Verify Binaries needs `Linux mac_android_aot_engine` (flutter/flutter#191999)
2026-08-28 [email protected] Roll Fuchsia Linux SDK from dDxH8G5cDBP602eyG... to J123CwfDPYyVDpkMl... (flutter/flutter#191984)
2026-08-28 [email protected] Update scheduled workflow for more tasks, add goldctl update (flutter/flutter#191991)
2026-08-28 [email protected] Update no-main-prs to leave a comment (flutter/flutter#191973)
2026-08-28 [email protected] [AGP 9.1.0 Migration flutter#4] Replace plugin build-type copy with initWith on public DSL (flutter/flutter#191606)
2026-08-28 [email protected] Roll Skia from fe0b9a5261f9 to 0b4249b26b38 (1 revision) (flutter/flutter#191974)
2026-08-28 [email protected] [UIScene] Migrate dev/benchmarks/macrobenchmarks to UIScene lifecycle (flutter/flutter#191648)
2026-08-28 [email protected] Uiscene migrate remaining apps (flutter/flutter#191652)
2026-08-28 [email protected] [tool] Migrate SymbolizeCommand to modular dependency injection (flutter/flutter#190744)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
victorsanni pushed a commit to victorsanni/packages that referenced this pull request Sep 9, 2026
…r#12693)

flutter/flutter@8d8c1aa...c978386

2026-08-30 [email protected] Roll Skia from ce359c7fbfe6 to 588b550a4dd8 (1 revision) (flutter/flutter#192040)
2026-08-30 [email protected] Roll Skia from 3ae8e3d1e335 to ce359c7fbfe6 (1 revision) (flutter/flutter#192037)
2026-08-30 [email protected] Roll Fuchsia Linux SDK from J123CwfDPYyVDpkMl... to o9DikEfRoFyVK3LKD... (flutter/flutter#192031)
2026-08-29 [email protected] Make the AbsorbPointer sample show the difference from IgnorePointer (flutter/flutter#188940)
2026-08-29 [email protected] Roll Dart SDK from 391ff83cd1d3 to 76abdf94faa8 (1 revision) (flutter/flutter#192021)
2026-08-29 [email protected] Roll Skia from b392fb672d13 to 3ae8e3d1e335 (1 revision) (flutter/flutter#192020)
2026-08-29 [email protected] Roll Skia from 0b4249b26b38 to b392fb672d13 (6 revisions) (flutter/flutter#192016)
2026-08-29 [email protected] Fixes for texture-backed gradients (flutter/flutter#191925)
2026-08-29 [email protected] Roll Dart SDK from ae63a6eca3f1 to 391ff83cd1d3 (3 revisions) (flutter/flutter#192010)
2026-08-29 [email protected] Fix Android license detection for cmdline-tools 23.0+ (flutter/flutter#191554)
2026-08-29 [email protected] [flutter_tools] Pause web server requests until initial compilation finishes (flutter/flutter#191990)
2026-08-28 [email protected] fix(workflow): Mac Verify Binaries needs `Linux mac_android_aot_engine` (flutter/flutter#191999)
2026-08-28 [email protected] Roll Fuchsia Linux SDK from dDxH8G5cDBP602eyG... to J123CwfDPYyVDpkMl... (flutter/flutter#191984)
2026-08-28 [email protected] Update scheduled workflow for more tasks, add goldctl update (flutter/flutter#191991)
2026-08-28 [email protected] Update no-main-prs to leave a comment (flutter/flutter#191973)
2026-08-28 [email protected] [AGP 9.1.0 Migration flutter#4] Replace plugin build-type copy with initWith on public DSL (flutter/flutter#191606)
2026-08-28 [email protected] Roll Skia from fe0b9a5261f9 to 0b4249b26b38 (1 revision) (flutter/flutter#191974)
2026-08-28 [email protected] [UIScene] Migrate dev/benchmarks/macrobenchmarks to UIScene lifecycle (flutter/flutter#191648)
2026-08-28 [email protected] Uiscene migrate remaining apps (flutter/flutter#191652)
2026-08-28 [email protected] [tool] Migrate SymbolizeCommand to modular dependency injection (flutter/flutter#190744)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CICD Run CI/CD d: docs/ flutter/flutter/docs, for contributors platform-android Android applications specifically tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants