You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three dependabot PRs are blocked on the same wall, and closing them one by one without writing the reason down means rediscovering it every month. This issue is that reason, plus what has to happen before any of them can land.
The plugin itself is already AGP 9 compatible as of #914. What is blocked is the example app, and the Gradle version that comes with it.
Gradle 9.6 needs AGP 9, everywhere
AGP 8.x relies on org.gradle.api.problems.internal.InternalProblems, which Gradle removed in 9.6.0. Any project on AGP 8 fails at configuration time under Gradle 9.6.x:
> Failed to apply plugin 'com.android.internal.library'.
> Plugin 'com.android.internal.library' relies on
'org.gradle.api.problems.internal.InternalProblems', a Gradle internal API
that was removed in Gradle 9.6.0. Update the plugin to a version that no
longer uses Gradle internal APIs, or use Gradle 9.5.
That is Gradle's own message, and it is version-specific rather than project-specific. It rules out both wrapper bumps:
chore(deps): bump gradle-wrapper from 9.5.1 to 9.6.1 in /maplibre_gl/android #884 bumps the plugin module's own wrapper to 9.6.1 while maplibre_gl/android/build.gradle pins AGP 8.13.2 in its buildscript. CI does not catch this, because nothing in CI configures that module through its own wrapper, so the PR is green while being broken. Reproduced locally by launching it the way the IDE does:
cd maplibre_gl/android
java -cp gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain help
which fails with the message above. Worth remembering that a green check on maplibre_gl/android/gradle/wrapper means very little today.
There is no intermediate step to take: 9.5.1 is the newest 9.5.x, and the next published versions are 9.6.0 and 9.6.1.
Flutter 3.44.0's own Gradle plugin throws a NullPointerException on AGP 9's new DSL. Needs android.newDsl=false, which the Flutter migrator adds automatically.
Past that, device_info_plus 12.3.0 does not declare compileSdk, which AGP 9 requires of every module.
file_picker and share_plus 12 still apply the Kotlin Gradle Plugin.
So the example cannot move until those plugins move, and the wrapper bumps cannot move until the example does.
Also waiting here
#803 wants androidx.core:core-ktx 1.19.0, whose AAR metadata declares minCompileSdk=37 and minAndroidGradlePluginVersion=9.1.0. Since checkAarMetadata runs in the consuming app, taking it would force every app using this plugin onto compileSdk 37 and AGP 9.1. #919 takes 1.18.0 instead, which declares exactly what 1.17.0 already declares. 1.19.0 comes back into scope once this issue is resolved.
Order of work
The plugin builds under AGP 9 already (build(android): apply the Kotlin Gradle Plugin only below AGP 9 #914), verified with AGP 9.3.1, Gradle 9.6.1 and built-in Kotlin: :maplibre_gl:compileDebugKotlin, :maplibre_gl:compileDebugJavaWithJavac and :maplibre_gl:bundleDebugAar all succeed.
The example app moves to AGP 9 once its plugin dependencies allow it, which also decides the device_info_plus question.
Also open, and worth settling here: whether .github/dependabot.yml should hold com.android.application, the Gradle wrapper and androidx.core until then, rather than reopening the same three PRs on every release.
Three dependabot PRs are blocked on the same wall, and closing them one by one without writing the reason down means rediscovering it every month. This issue is that reason, plus what has to happen before any of them can land.
The plugin itself is already AGP 9 compatible as of #914. What is blocked is the example app, and the Gradle version that comes with it.
Gradle 9.6 needs AGP 9, everywhere
AGP 8.x relies on
org.gradle.api.problems.internal.InternalProblems, which Gradle removed in 9.6.0. Any project on AGP 8 fails at configuration time under Gradle 9.6.x:That is Gradle's own message, and it is version-specific rather than project-specific. It rules out both wrapper bumps:
maplibre_gl_example/android/settings.gradlepins AGP 8.13.2. CI catches this.maplibre_gl/android/build.gradlepins AGP 8.13.2 in itsbuildscript. CI does not catch this, because nothing in CI configures that module through its own wrapper, so the PR is green while being broken. Reproduced locally by launching it the way the IDE does:which fails with the message above. Worth remembering that a green check on
maplibre_gl/android/gradle/wrappermeans very little today.There is no intermediate step to take: 9.5.1 is the newest 9.5.x, and the next published versions are 9.6.0 and 9.6.1.
What blocks the example app on AGP 9 (#904)
Four things, none of them in this repository:
NullPointerExceptionon AGP 9's new DSL. Needsandroid.newDsl=false, which the Flutter migrator adds automatically.device_info_plus12.3.0 does not declarecompileSdk, which AGP 9 requires of every module.device_info_plusandpermission_handler_androiddo declare it, but compile against Android SDK 37. See chore(example): hold permission_handler at 12.x #913 for how that plays out.file_pickerandshare_plus12 still apply the Kotlin Gradle Plugin.So the example cannot move until those plugins move, and the wrapper bumps cannot move until the example does.
Also waiting here
#803 wants
androidx.core:core-ktx1.19.0, whose AAR metadata declaresminCompileSdk=37andminAndroidGradlePluginVersion=9.1.0. SincecheckAarMetadataruns in the consuming app, taking it would force every app using this plugin onto compileSdk 37 and AGP 9.1. #919 takes 1.18.0 instead, which declares exactly what 1.17.0 already declares. 1.19.0 comes back into scope once this issue is resolved.Order of work
:maplibre_gl:compileDebugKotlin,:maplibre_gl:compileDebugJavaWithJavacand:maplibre_gl:bundleDebugAarall succeed.device_info_plusquestion.androidx.core1.19.0 (chore(deps): bump androidx.core:core-ktx from 1.17.0 to 1.19.0 in /maplibre_gl/android in the androidx-core group across 1 directory #803) become one-line changes.maplibre_gl/android/build.gradlecan then drop theagpMajor < 9condition added in build(android): apply the Kotlin Gradle Plugin only below AGP 9 #914 and apply nothing, which is the shape the Flutter guide documents.Also open, and worth settling here: whether
.github/dependabot.ymlshould holdcom.android.application, the Gradle wrapper andandroidx.coreuntil then, rather than reopening the same three PRs on every release.