When using an activity-alias in the AndroidManifest.xml for your main activity it is not picked up by the Flutter tools and will thrown an error even though it's a valid state. (see https://developer.android.com/guide/topics/manifest/activity-alias-element )
The application will run correctly when using ./gradlew installDebug, confirming that it's a valid state.
Only the detection in https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/application_package.dart#L209 is incorrect.
Steps to Reproduce
- run
flutter create activity_alias
- remove the intent-filter from the
.MainActivity
- add an activity-alias
<activity-alias android:name="this.doesnt.matter" android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
- run
flutter run
Logs
[ +36 ms] package identifier or launch activity not found.
[ +1 ms] Please check /Users/peter/dev/github/activity_alias/android/app/src/main/AndroidManifest.xml for errors.
[ +3 ms] No application found for TargetPlatform.android_x86.
Is your project missing an android/app/src/main/AndroidManifest.xml?
Consider running "flutter create ." to create one.
#0 throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
#1 RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:475:7)
<asynchronous suspension>
#2 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:478:18)
<asynchronous suspension>
#3 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:383:33)
<asynchronous suspension>
#4 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#5 _rootRun (dart:async/zone.dart:1124:13)
#6 _CustomZone.run (dart:async/zone.dart:1021:19)
#7 _runZoned (dart:async/zone.dart:1516:10)
#8 runZoned (dart:async/zone.dart:1463:12)
#9 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#10 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:375:20)
#11 CommandRunner.runCommand (package:args/command_runner.dart:197:27)
<asynchronous suspension>
#12 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:396:21)
<asynchronous suspension>
#13 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#14 _rootRun (dart:async/zone.dart:1124:13)
#15 _CustomZone.run (dart:async/zone.dart:1021:19)
#16 _runZoned (dart:async/zone.dart:1516:10)
#17 runZoned (dart:async/zone.dart:1463:12)
#18 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#19 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:356:19)
<asynchronous suspension>
#20 CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:112:25)
#21 new Future.sync (dart:async/future.dart:224:31)
#22 CommandRunner.run (package:args/command_runner.dart:112:14)
#23 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:242:18)
#24 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:22)
<asynchronous suspension>
#25 _rootRun (dart:async/zone.dart:1124:13)
#26 _CustomZone.run (dart:async/zone.dart:1021:19)
#27 _runZoned (dart:async/zone.dart:1516:10)
#28 runZoned (dart:async/zone.dart:1500:12)
#29 run.<anonymous closure> (package:flutter_tools/runner.dart:60:18)
<asynchronous suspension>
#30 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#31 _rootRun (dart:async/zone.dart:1124:13)
#32 _CustomZone.run (dart:async/zone.dart:1021:19)
#33 _runZoned (dart:async/zone.dart:1516:10)
#34 runZoned (dart:async/zone.dart:1463:12)
#35 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#36 runInContext (package:flutter_tools/src/context_runner.dart:56:24)
<asynchronous suspension>
#37 run (package:flutter_tools/runner.dart:51:10)
#38 main (package:flutter_tools/executable.dart:62:9)
<asynchronous suspension>
#39 main (file:///Users/peter/dev/sdk/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3)
#40 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#41 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
Analyzing activity_alias...
No issues found! (ran in 1.1s)
[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Mac OS X 10.14.6 18G87, locale en-BE)
• Flutter version 1.7.8+hotfix.4 at /Users/peter/dev/sdk/flutter
• Framework revision 20e59316b8 (5 weeks ago), 2019-07-18 20:04:33 -0700
• Engine revision fee001c93f
• Dart version 2.4.0
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
• Android SDK at /Users/peter/dev/sdk/Android
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.1
• ANDROID_HOME = /Users/peter/dev/sdk/Android
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.3, Build version 10G8
• CocoaPods version 1.7.5
[✓] iOS tools - develop for iOS devices
• ios-deploy 1.9.4
[✓] Android Studio (version 3.5)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 37.1.1
• Dart plugin version 191.8405
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
[✓] IntelliJ IDEA Ultimate Edition (version 2019.2)
• IntelliJ at /Applications/IntelliJ IDEA.app
• Flutter plugin version 38.2.4
• Dart plugin version 192.6459
[✓] VS Code (version 1.37.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.3.0
[✓] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)
• No issues found!
When using an activity-alias in the AndroidManifest.xml for your main activity it is not picked up by the Flutter tools and will thrown an error even though it's a valid state. (see https://developer.android.com/guide/topics/manifest/activity-alias-element )
The application will run correctly when using
./gradlew installDebug, confirming that it's a valid state.Only the detection in https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/application_package.dart#L209 is incorrect.
Steps to Reproduce
flutter create activity_alias.MainActivityflutter runLogs