Flip the newDsl default: drop the opt-out from templates and migrate it away - #10
Open
reidbaker-agent wants to merge 1 commit into
Open
Flip the newDsl default: drop the opt-out from templates and migrate it away#10reidbaker-agent wants to merge 1 commit into
reidbaker-agent wants to merge 1 commit into
Conversation
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
from
July 22, 2026 15:54
1c7628d to
90e7f64
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
2 times, most recently
from
July 28, 2026 13:36
4b3f4e5 to
594f593
Compare
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
from
July 28, 2026 13:36
90e7f64 to
e677b61
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
from
July 28, 2026 13:37
594f593 to
2e64d7a
Compare
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
from
July 28, 2026 13:37
e677b61 to
0469863
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
from
July 29, 2026 20:22
2e64d7a to
bb22914
Compare
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
from
July 29, 2026 20:23
0469863 to
0c85338
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
from
July 29, 2026 20:45
bb22914 to
65bafb0
Compare
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
from
July 29, 2026 20:45
0c85338 to
45274d4
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
from
July 30, 2026 21:59
65bafb0 to
39f0c33
Compare
reidbaker-agent
force-pushed
the
agp-newdsl-flip
branch
2 times, most recently
from
July 31, 2026 16:16
a850013 to
aae8462
Compare
reidbaker-agent
force-pushed
the
agp-aar-script
branch
from
July 31, 2026 16:16
39f0c33 to
89849d6
Compare
reidbaker
force-pushed
the
agp-newdsl-flip
branch
from
July 31, 2026 18:07
aae8462 to
7b8bdf1
Compare
reidbaker
force-pushed
the
agp-aar-script
branch
from
July 31, 2026 18:07
89849d6 to
4a8e3a6
Compare
reidbaker
force-pushed
the
agp-newdsl-flip
branch
from
August 5, 2026 16:11
7b8bdf1 to
721dcf4
Compare
…it away Phase P9 of the AGP public-API migration (flutter#180137, flutter#166550) - the breaking-change PR. The Flutter Gradle Plugin is public-API-only since P7/P8, so projects no longer need android.newDsl=false: - The app and module gradle.properties templates no longer ship the newDsl opt-out (android.builtInKotlin=false stays; it belongs to the separate built-in Kotlin migration). - DisableNewDslMigration is replaced by RemoveNewDslOptOutMigration, which removes exactly the line pairs Flutter wrote: one of the two known marker comments ('added by the Flutter template' / 'added automatically by Flutter migrator') immediately followed by android.newDsl=false. The removal is anchored on the android.newDsl property line, so the adjacent builtInKotlin marker/flag lines are never touched; hand-added opt-outs and developer-edited values are respected; the file the old migrator created with only the flag is emptied. A visible status message names the change and links the breaking-change page. - New legacyVariantApiUsageErrorHandler matches the Gradle failures users hit when their build scripts use the removed legacy variant API (unknown property/method applicationVariants, libraryVariants, testVariants, variantFilter) and prints problem, cause, fix (androidComponents.onVariants), the breaking-change page URL, and the android.newDsl=false escape hatch with its AGP 10 expiry. useNewAgpDslErrorHandler is retired: its signature was the FGP's own legacy DSL access failing under newDsl, which can no longer happen. - kNewDslBreakingChangeDocsUrl pins the docs.flutter.dev page location; the in-repo website-page draft records that the page must be published at that exact path before this reaches beta. - The migration doc records the stable-channel release-management step (guard or accept the add-migrator flip-flop during the overlap window). - Updated test_result_embedder.gradle.kts in dev/integration_tests/android_hardware_smoke_test to resolve adbExecutable via ApplicationAndroidComponentsExtension (sdkComponents.adb) with fallback to BaseExtension, preventing Extension of type 'BaseExtension' does not exist when RemoveNewDslOptOutMigration enables newDsl=true. Verified here: android_project_migration_test.dart (42/42) and gradle_errors_test.dart (56/56) pass with the repo Dart SDK; dart analyze clean on the changed files. CI preconditions before this ships: full newDsl=true matrix green (R6), website page live, top-25 pub.dev plugin scratch-app sweep under -Pandroid.newDsl=true, and GradleHandledError eventLabel hit-rate monitoring during the beta soak as the stable go/no-go signal. Cleanly revertible in isolation.
reidbaker
force-pushed
the
agp-newdsl-flip
branch
from
August 6, 2026 14:37
721dcf4 to
ab4dd34
Compare
This was referenced Aug 10, 2026
10 tasks
pull Bot
pushed a commit
to Little-Star888/flutter
that referenced
this pull request
Aug 12, 2026
…on documentation (flutter#190842) There are 2 files in this pr. One is a document the ai used to keep track of work. More importantly it acts kind of like issues so it references the items in future prs. The second is user facing website documentation. I do not know if we will use it verbatim but for the set of prs lets treat that md doc as human understandable documentation that we must understand before landing the next pr. Reviewers: When the pr is out of draft and your comments are fully addressed please prioritize this pr over other work. The review bar is higher, the number of reviews has more people and the work for the next pr is already done. - @reidbaker --- 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. The complete stack has pass pre submits, post submits and customer tests. https://flutter-dashboard.appspot.com/#/build?repo=flutter&branch=experimental/agp-gradle-api 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. reidbaker-agent#1 (branch: agp-api-doc) 2. reidbaker-agent#2 (branch: agp-internal-utils) 3. reidbaker-agent#3 (branch: agp-buildmode-deps) 4. reidbaker-agent#4 (branch: agp-plugin-buildtypes) 5. reidbaker-agent#5 (branch: agp-ndk-fallback) 6. reidbaker-agent#6 (branch: agp-assets-onvariants) 7. reidbaker-agent#7 (branch: agp-apk-copy-versioncode) 8. reidbaker-agent#8 (branch: agp-add-to-app) 9. reidbaker-agent#9 (branch: agp-aar-script) 10. reidbaker-agent#10 (branch: agp-newdsl-flip) 11. reidbaker-agent#11 (branch: agp-gradle-api) Follow up work is tracked in flutter#190964 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 the every pr. --- Agent authored pr description This is PR 1 of 11 in the AGP 9.1.0 / public `gradle-api` migration stack. It adds the contributor-facing and website draft documentation for the Flutter Gradle Plugin's migration to the Android Gradle Plugin public Variant API, which unblocks building Flutter Android apps with AGP's `newDsl=true` enabled. Part of flutter#180137 and flutter#166550. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: reidbaker-agent <reidbaker@google.com>
10 tasks
okorohelijah
pushed a commit
to okorohelijah/flutter
that referenced
this pull request
Aug 17, 2026
…90957) This is PR 2 of 11 in the AGP 9.1.0 / public `gradle-api`/ newdls migration stack. This PR extracts some common utilities used in the Flutter Gradle Plugin to internal functions, to be used in upcoming PRs in this stack. It also introduces a typesafe CompileSdkVersion that handles comparisons between api versions and preview versions which are strings. First attempt was here flutter#190949 this pr includes my feedback from that first review. The first attempt did not follow the pattern of having the agent account open the pr because of rebase shenanigans that ended up touching freeze.yml. --- 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. The complete stack has pass pre submits, post submits and customer tests. https://flutter-dashboard.appspot.com/#/build?repo=flutter&branch=experimental/agp-gradle-api 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. reidbaker-agent#1 (branch: agp-api-doc) 2. reidbaker-agent#2 (branch: agp-internal-utils) 3. reidbaker-agent#3 (branch: agp-buildmode-deps) 4. reidbaker-agent#4 (branch: agp-plugin-buildtypes) 5. reidbaker-agent#5 (branch: agp-ndk-fallback) 6. reidbaker-agent#6 (branch: agp-assets-onvariants) 7. reidbaker-agent#7 (branch: agp-apk-copy-versioncode) 8. reidbaker-agent#8 (branch: agp-add-to-app) 9. reidbaker-agent#9 (branch: agp-aar-script) 10. reidbaker-agent#10 (branch: agp-newdsl-flip) 11. reidbaker-agent#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 the every pr. --- Agent authored description. This is PR 2 of 11 in the AGP 9.1.0 / public `gradle-api` migration stack. This PR extracts some common utilities used in the Flutter Gradle Plugin to internal functions, to be used in upcoming PRs in this stack. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. --------- Co-authored-by: reidbaker-agent <reidbaker@google.com> Co-authored-by: Reid Baker <1063596+reidbaker@users.noreply.github.com>
10 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 10 of 11 of the AGP public-API migration; stacked on #9.
Phase P9 of the AGP public-API migration (flutter#180137,
flutter#166550) - the breaking-change PR. The Flutter Gradle
Plugin is public-API-only since P7/P8, so projects no longer need
android.newDsl=false:
newDsl opt-out (android.builtInKotlin=false stays; it belongs to the
separate built-in Kotlin migration).
which removes exactly the line pairs Flutter wrote: one of the two
known marker comments ('added by the Flutter template' / 'added
automatically by Flutter migrator') immediately followed by
android.newDsl=false. The removal is anchored on the android.newDsl
property line, so the adjacent builtInKotlin marker/flag lines are
never touched; hand-added opt-outs and developer-edited values are
respected; the file the old migrator created with only the flag is
emptied. A visible status message names the change and links the
breaking-change page.
users hit when their build scripts use the removed legacy variant API
(unknown property/method applicationVariants, libraryVariants,
testVariants, variantFilter) and prints problem, cause, fix
(androidComponents.onVariants), the breaking-change page URL, and the
android.newDsl=false escape hatch with its AGP 10 expiry.
useNewAgpDslErrorHandler is retired: its signature was the FGP's own
legacy DSL access failing under newDsl, which can no longer happen.
the in-repo website-page draft records that the page must be
published at that exact path before this reaches beta.
(guard or accept the add-migrator flip-flop during the overlap
window).
Verified here: android_project_migration_test.dart (42/42) and
gradle_errors_test.dart (56/56) pass with the repo Dart SDK; dart
analyze clean on the changed files. CI preconditions before this ships:
full newDsl=true matrix green (R6), website page live, top-25 pub.dev
plugin scratch-app sweep under -Pandroid.newDsl=true, and
GradleHandledError eventLabel hit-rate monitoring during the beta soak
as the stable go/no-go signal.
Cleanly revertible in isolation.
CI must run the FGP unit tests (the Kotlin suite in packages/flutter_tools/gradle could not run in the delivery sandbox: dl.google.com returns 403, so AGP artifacts do not resolve).