[flutter_tools] fix build for projects with watchOS companion app (#51126)
Co-authored-by: Georg Wechslberger <wechslbe@ma.tum.de>
diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart
index 9928c96..fd7fa2e 100644
--- a/packages/flutter_tools/lib/src/project.dart
+++ b/packages/flutter_tools/lib/src/project.dart
@@ -486,6 +486,25 @@
await _updateGeneratedXcodeConfigIfNeeded();
}
+ /// Check if one the [targets] of the project is a watchOS companion app target.
+ Future<bool> containsWatchCompanion(List<String> targets) async {
+ final String bundleIdentifier = await productBundleIdentifier;
+ // A bundle identifier is required for a companion app.
+ if (bundleIdentifier == null) {
+ return false;
+ }
+ for (final String target in targets) {
+ // Create Info.plist file of the target.
+ final File infoFile = hostAppRoot.childDirectory(target).childFile('Info.plist');
+ // The Info.plist file of a target contains the key WKCompanionAppBundleIdentifier,
+ // if it is a watchOS companion app.
+ if (infoFile.existsSync() && globals.plistParser.getValueFromFile(infoFile.path, 'WKCompanionAppBundleIdentifier') == bundleIdentifier) {
+ return true;
+ }
+ }
+ return false;
+ }
+
Future<void> _updateGeneratedXcodeConfigIfNeeded() async {
if (globals.cache.isOlderThanToolsStamp(generatedXcodePropertiesFile)) {
await xcode.updateGeneratedXcodeProperties(