diff --git a/packages/flutter_tools/lib/src/ios/ios_deploy.dart b/packages/flutter_tools/lib/src/ios/ios_deploy.dart index e6d2bb7eca4..1d9a1a55ff9 100644 --- a/packages/flutter_tools/lib/src/ios/ios_deploy.dart +++ b/packages/flutter_tools/lib/src/ios/ios_deploy.dart @@ -22,6 +22,7 @@ import 'iproxy.dart'; const String noProvisioningProfileErrorOne = 'Error 0xe8008015'; const String noProvisioningProfileErrorTwo = 'Error 0xe8000067'; const String deviceLockedError = 'e80000e2'; +const String deviceLockedErrorMessage = 'the device was not, or could not be, unlocked'; const String unknownAppLaunchError = 'Error 0xe8000022'; class IOSDeploy { @@ -520,7 +521,7 @@ String _monitorIOSDeployFailure(String stdout, Logger logger) { logger.printError(noProvisioningProfileInstruction, emphasis: true); // Launch issues. - } else if (stdout.contains(deviceLockedError)) { + } else if (stdout.contains(deviceLockedError) || stdout.contains(deviceLockedErrorMessage)) { logger.printError(''' ═══════════════════════════════════════════════════════════════════════════════════ Your device is locked. Unlock your device first before running. diff --git a/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart b/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart index 8fd3a5d0ae7..855ea5029a0 100644 --- a/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/ios_deploy_test.dart @@ -258,7 +258,7 @@ void main () { expect(logger.errorText, contains('No Provisioning Profile was found')); }); - testWithoutContext('device locked', () async { + testWithoutContext('device locked code', () async { final FakeProcessManager processManager = FakeProcessManager.list([ const FakeCommand( command: ['ios-deploy'], @@ -273,6 +273,21 @@ void main () { expect(logger.errorText, contains('Your device is locked.')); }); + testWithoutContext('device locked message', () async { + final FakeProcessManager processManager = FakeProcessManager.list([ + const FakeCommand( + command: ['ios-deploy'], + stdout: '[ +95 ms] error: The operation couldn’t be completed. Unable to launch io.flutter.examples.gallery because the device was not, or could not be, unlocked.', + ), + ]); + final IOSDeployDebugger iosDeployDebugger = IOSDeployDebugger.test( + processManager: processManager, + logger: logger, + ); + await iosDeployDebugger.launchAndAttach(); + expect(logger.errorText, contains('Your device is locked.')); + }); + testWithoutContext('unknown app launch error', () async { final FakeProcessManager processManager = FakeProcessManager.list([ const FakeCommand(