tree 48d11881528e9020978456ddece829237546ba04
parent 2a6369fc07bd0f5acc7f58cdf703df4489a2666f
author flutteractionsbot <154381524+flutteractionsbot@users.noreply.github.com> 1788384394 -0700
committer GitHub <noreply@github.com> 1788384394 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqmJSKCRC1aQ7uu5UhlAAAAEcQAAwirB07c0yz///GZUNC/GfL
 4ul4pPwBKIp+O/vp0tfEOy9moBbyN+nQx4bSYopcSCtDaCfvQmYGkkMogdYkYPBi
 VN8/+wYxh67d2h05v39V1NVxyNWtpR/O6CAC9k2Sonp1LsZ41zWhvM6vZttRKtyB
 jxkzU2NdwFa5aSrweoumsEfcHLyIZds3/ULVbx6jEtqNehbIfJfcbbVKoNdWtdAm
 fi0rOqcG/OL1UxaQbX3G/iuy0xyrtm7Wjmv1VUJSDZMW8E7Vza0+56fTOKV3QHMT
 tSrFGJJC47bQW3oXb6q0vxzRmmqApAsAtoFYvK82xMqq7oxjKZY9KrTM5PMxQrv0
 Nku/s2lz2uQF+YUkVrR5UB8gsQWe3USqRSlvkQhiqQAioGuwcbmbJiO2V3Cwliav
 d7Xo6+Z26E+ta50/H+hOaAX2VMfdLiPHqBy6rmXNQCdFQ6TQmCQIbOeSjDJlqKuL
 mxbn541Hy9WHU9JRyXsGEHorovu+JHOFOqNG3ExgX1ymnyYxMZV6sWxSxOL8NkBL
 tznO7gII4HSN8Vw2ABs5uaiY4bbS6Ey/BWKTrt5gWiCR0nNxVuYCSj0HDxoVwX7x
 Zk36hCtu50wX/KuM0rlI4lFAUFjE+eiq6bZCzvCwpZAftkEdqx8RxdOcmEq+Dpas
 rQQeotUjYkc9BedqR2bY
 =Ipyj
 -----END PGP SIGNATURE-----
 

[CP-beta]Fix Android license detection for cmdline-tools 23.0+ (#192132)

This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
https://github.com/flutter/flutter/issues/191487

### Impact Description:
Android SDK Command-line Tools 23.0 deprecated `sdkmanager --licenses` in favor of the new `android` CLI. When invoked, `sdkmanager --licenses` now only outputs a deprecation notice (`Warning: The --licenses option is no longer needed.`) rather than the parseable license summary `flutter doctor` previously depended on.

As a result, `flutter doctor` fails to parse license status and reports `✗ Android license status unknown.` while prompting users to run `flutter doctor --android-licenses`, which fails to resolve the issue. 

### Changelog Description:
[flutter/191487] When using Android SDK Command-line Tools 23.0+ for Android, flutter doctor incorrectly reports "Android license status unknown".

### Workaround:
1. Downgrade Android SDK Command-line Tools to version 22.0 via the Android Studio SDK Manager or CLI.
2. If licenses have already been accepted on disk in `<Android-SDK>/licenses/`, Android Gradle builds still succeed and the `flutter doctor` warning can be safely ignored (if the user knows to ignore).

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
1. Ensure Android SDK Command-line Tools 23.0 is installed (verify in `$ANDROID_HOME/cmdline-tools/latest/source.properties` that `Pkg.Revision=23.0`).
2. Run `flutter doctor -v`.
3. Verify that under `Android toolchain`, it reports `• All Android licenses accepted.` instead of `✗ Android license status unknown.`
4. (Optional negative check) Temporarily rename the `$ANDROID_HOME/licenses` directory, run `flutter doctor -v`, and verify it reports `Android licenses not accepted`. Restore the directory.