From dffbfebbf1c6ecacf6890843b0a13bb4e74598d3 Mon Sep 17 00:00:00 2001 From: Shi-Hao Hong Date: Tue, 19 Mar 2019 14:44:22 -0700 Subject: [PATCH] added friendlier error for invalid AndroidManifest.xml (#29604) --- .../lib/src/application_package.dart | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/application_package.dart b/packages/flutter_tools/lib/src/application_package.dart index 40067c20261..6d92f28b865 100644 --- a/packages/flutter_tools/lib/src/application_package.dart +++ b/packages/flutter_tools/lib/src/application_package.dart @@ -10,6 +10,7 @@ import 'package:xml/xml.dart' as xml; import 'android/android_sdk.dart'; import 'android/gradle.dart'; +import 'base/common.dart'; import 'base/context.dart'; import 'base/file_system.dart'; import 'base/os.dart' show os; @@ -161,7 +162,20 @@ class AndroidApk extends ApplicationPackage { return null; final String manifestString = manifest.readAsStringSync(); - final xml.XmlDocument document = xml.parse(manifestString); + xml.XmlDocument document; + try { + document = xml.parse(manifestString); + } on xml.XmlParserException catch (exception) { + String manifestLocation; + if (androidProject.isUsingGradle) { + manifestLocation = fs.path.join(androidProject.hostAppGradleRoot.path, 'app', 'src', 'main', 'AndroidManifest.xml'); + } else { + manifestLocation = fs.path.join(androidProject.hostAppGradleRoot.path, 'AndroidManifest.xml'); + } + printError('AndroidManifest.xml is not a valid XML document.'); + printError('Please check $manifestLocation for errors.'); + throwToolExit('XML Parser error message: ${exception.toString()}'); + } final Iterable manifests = document.findElements('manifest'); if (manifests.isEmpty)