Fall-back to platform tools in Android SDK detection logic. (#28863)

diff --git a/packages/flutter_tools/test/application_package_test.dart b/packages/flutter_tools/test/application_package_test.dart
index 099e8a2..ff660ad 100644
--- a/packages/flutter_tools/test/application_package_test.dart
+++ b/packages/flutter_tools/test/application_package_test.dart
@@ -65,6 +65,34 @@
       ).path)..createSync(recursive: true);
     });
 
+    testUsingContext('Licenses not available, platform and buildtools available, apk exists', () async {
+      const String aaptPath = 'aaptPath';
+      final File apkFile = fs.file('app.apk');
+      final AndroidSdkVersion sdkVersion = MockitoAndroidSdkVersion();
+      when(sdkVersion.aaptPath).thenReturn(aaptPath);
+      when(sdk.latestVersion).thenReturn(sdkVersion);
+      when(sdk.platformToolsAvailable).thenReturn(true);
+      when(sdk.licensesAvailable).thenReturn(false);
+      when(mockProcessManager.runSync(
+          argThat(equals(<String>[
+            aaptPath,
+            'dump',
+            'xmltree',
+            apkFile.path,
+            'AndroidManifest.xml',
+          ])),
+          workingDirectory: anyNamed('workingDirectory'),
+          environment: anyNamed('environment'),
+        ),
+      ).thenReturn(ProcessResult(0, 0, _aaptDataWithDefaultEnabledAndMainLauncherActivity, null));
+
+      final ApplicationPackage applicationPackage = await ApplicationPackageFactory.instance.getPackageForPlatform(
+        TargetPlatform.android_arm,
+        applicationBinary: apkFile,
+      );
+      expect(applicationPackage.name, 'app.apk');
+    }, overrides: overrides);
+
     testUsingContext('Licenses available, build tools not, apk exists', () async {
       when(sdk.latestVersion).thenReturn(null);
       final FlutterProject project = await FlutterProject.current();