From 367203b3011fc1752cfa1f51adf9751d090c94e6 Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Fri, 15 Sep 2023 14:01:05 -0700 Subject: [PATCH] =?UTF-8?q?Makes=20scheme=20and=20target=20optional=20para?= =?UTF-8?q?meter=20when=20getting=20universal=20lin=E2=80=A6=20(#134571)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …k settings the show build settings xcode command can only accept one of the target or scheme flag. Therefore I make them optional. --- .../flutter_tools/lib/src/commands/analyze.dart | 15 +-------------- .../lib/src/commands/ios_analyze.dart | 13 ++++++------- packages/flutter_tools/lib/src/xcode_project.dart | 5 ++--- .../commands.shard/hermetic/ios_analyze_test.dart | 13 +++---------- .../test/general.shard/project_test.dart | 6 ------ 5 files changed, 12 insertions(+), 40 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index 9a558fe8d4..68b66a425c 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart @@ -152,7 +152,7 @@ class AnalyzeCommand extends FlutterCommand { argParser.addFlag('output-universal-link-settings', negatable: false, help: 'Output a JSON with iOS Xcode universal link settings into a file. ' - 'The "--configuration", "--scheme", and "--target" must also be set.', + 'The "--configuration" and "--target" must be set.', hide: !verboseHelp, ); @@ -162,12 +162,6 @@ class AnalyzeCommand extends FlutterCommand { hide: !verboseHelp, ); - argParser.addOption('scheme', - help: 'Sets the iOS build scheme to be analyzed.', - valueHelp: 'scheme', - hide: !verboseHelp, - ); - argParser.addOption('target', help: 'Sets the iOS build target to be analyzed.', valueHelp: 'target', @@ -264,7 +258,6 @@ class AnalyzeCommand extends FlutterCommand { final IOSAnalyzeOption option; final String? configuration; final String? target; - final String? scheme; if (argResults!['list-build-options'] as bool && argResults!['output-universal-link-settings'] as bool) { throwToolExit('Only one of "--list-build-options" or "--output-universal-link-settings" can be provided'); } @@ -272,7 +265,6 @@ class AnalyzeCommand extends FlutterCommand { option = IOSAnalyzeOption.listBuildOptions; configuration = null; target = null; - scheme = null; } else if (argResults!['output-universal-link-settings'] as bool) { option = IOSAnalyzeOption.outputUniversalLinkSettings; configuration = argResults!['configuration'] as String?; @@ -283,10 +275,6 @@ class AnalyzeCommand extends FlutterCommand { if (target == null) { throwToolExit('"--target" must be provided'); } - scheme = argResults!['scheme'] as String?; - if (scheme == null) { - throwToolExit('"--scheme" must be provided'); - } } else { throwToolExit('No argument is provided to analyze. Use -h to see available commands.'); } @@ -304,7 +292,6 @@ class AnalyzeCommand extends FlutterCommand { option: option, configuration: configuration, target: target, - scheme: scheme, logger: _logger, ).analyze(); } else if (boolArg('suggestions')) { diff --git a/packages/flutter_tools/lib/src/commands/ios_analyze.dart b/packages/flutter_tools/lib/src/commands/ios_analyze.dart index ae8f0bab76..4b5a1b0956 100644 --- a/packages/flutter_tools/lib/src/commands/ios_analyze.dart +++ b/packages/flutter_tools/lib/src/commands/ios_analyze.dart @@ -15,7 +15,7 @@ enum IOSAnalyzeOption { /// /// An example output: /// - /// {"configurations":["Debug","Release","Profile"],"schemes":["Runner"],"targets":["Runner","RunnerTests"]} + /// {"configurations":["Debug","Release","Profile"],"targets":["Runner","RunnerTests"]} listBuildOptions, /// Outputs universal link settings of the iOS Xcode sub-project into a file. @@ -32,16 +32,14 @@ class IOSAnalyze { required this.project, required this.option, this.configuration, - this.scheme, this.target, required this.logger, }) : assert(option == IOSAnalyzeOption.listBuildOptions || - (configuration != null && scheme != null && target != null)); + (configuration != null && target != null)); final FlutterProject project; final IOSAnalyzeOption option; final String? configuration; - final String? scheme; final String? target; final Logger logger; @@ -55,14 +53,15 @@ class IOSAnalyze { } else { result = >{ 'configurations': info.buildConfigurations, - 'schemes': info.schemes, 'targets': info.targets, }; } logger.printStatus(jsonEncode(result)); case IOSAnalyzeOption.outputUniversalLinkSettings: - await project.ios.outputsUniversalLinkSettings(configuration: configuration!, scheme: scheme!, target: target!); - final String filePath = await project.ios.outputsUniversalLinkSettings(configuration: configuration!, scheme: scheme!, target: target!); + final String filePath = await project.ios.outputsUniversalLinkSettings( + configuration: configuration!, + target: target!, + ); logger.printStatus('result saved in $filePath'); } } diff --git a/packages/flutter_tools/lib/src/xcode_project.dart b/packages/flutter_tools/lib/src/xcode_project.dart index ff17490a88..48e7041d8a 100644 --- a/packages/flutter_tools/lib/src/xcode_project.dart +++ b/packages/flutter_tools/lib/src/xcode_project.dart @@ -221,18 +221,17 @@ class IosProject extends XcodeBasedProject { /// The return future will resolve to string path to the output file. Future outputsUniversalLinkSettings({ required String configuration, - required String scheme, required String target, }) async { final XcodeProjectBuildContext context = XcodeProjectBuildContext( configuration: configuration, - scheme: scheme, target: target, ); final File file = await parent.buildDirectory .childDirectory('deeplink_data') - .childFile('universal-link-settings-$configuration-$scheme-$target.json') + .childFile('universal-link-settings-$configuration-$target.json') .create(recursive: true); + await file.writeAsString(jsonEncode({ 'bundleIdentifier': await _productBundleIdentifierWithBuildContext(context), 'teamIdentifier': await _getTeamIdentifier(context), diff --git a/packages/flutter_tools/test/commands.shard/hermetic/ios_analyze_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/ios_analyze_test.dart index 5290d5d38e..065a0543fe 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/ios_analyze_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/ios_analyze_test.dart @@ -68,21 +68,18 @@ void main() { final MockIosProject ios = MockIosProject(); final MockFlutterProject project = MockFlutterProject(ios); const String expectedConfig = 'someConfig'; - const String expectedScheme = 'someScheme'; - const String expectedTarget = 'someConfig'; + const String expectedTarget = 'someTarget'; const String expectedOutputFile = '/someFile'; ios.outputFileLocation = expectedOutputFile; await IOSAnalyze( project: project, option: IOSAnalyzeOption.outputUniversalLinkSettings, configuration: expectedConfig, - scheme: expectedScheme, target: expectedTarget, logger: logger, ).analyze(); expect(logger.statusText, contains(expectedOutputFile)); expect(ios.outputConfiguration, expectedConfig); - expect(ios.outputScheme, expectedScheme); expect(ios.outputTarget, expectedTarget); }); @@ -91,8 +88,7 @@ void main() { final MockFlutterProject project = MockFlutterProject(ios); const List targets = ['target1', 'target2']; const List configs = ['config1', 'config2']; - const List schemes = ['scheme1', 'scheme2']; - ios.expectedProjectInfo = XcodeProjectInfo(targets, configs, schemes, logger); + ios.expectedProjectInfo = XcodeProjectInfo(targets, configs, const [], logger); await IOSAnalyze( project: project, option: IOSAnalyzeOption.listBuildOptions, @@ -101,7 +97,6 @@ void main() { final Map jsonOutput = jsonDecode(logger.statusText) as Map; expect(jsonOutput['targets'], unorderedEquals(targets)); expect(jsonOutput['configurations'], unorderedEquals(configs)); - expect(jsonOutput['schemes'], unorderedEquals(schemes)); }); testUsingContext('throws if provide multiple path', () async { @@ -144,15 +139,13 @@ class MockFlutterProject extends Fake implements FlutterProject { class MockIosProject extends Fake implements IosProject { String? outputConfiguration; - String? outputScheme; String? outputTarget; late String outputFileLocation; late XcodeProjectInfo expectedProjectInfo; @override - Future outputsUniversalLinkSettings({required String configuration, required String scheme, required String target}) async { + Future outputsUniversalLinkSettings({required String configuration, required String target}) async { outputConfiguration = configuration; - outputScheme = scheme; outputTarget = target; return outputFileLocation; } diff --git a/packages/flutter_tools/test/general.shard/project_test.dart b/packages/flutter_tools/test/general.shard/project_test.dart index ad30284a0b..2cd3ca26f8 100644 --- a/packages/flutter_tools/test/general.shard/project_test.dart +++ b/packages/flutter_tools/test/general.shard/project_test.dart @@ -733,7 +733,6 @@ apply plugin: 'kotlin-android' const XcodeProjectBuildContext buildContext = XcodeProjectBuildContext( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); xcodeProjectInterpreter.buildSettingsByBuildContext[buildContext] = { @@ -753,7 +752,6 @@ apply plugin: 'kotlin-android' ); final String outputFilePath = await project.ios.outputsUniversalLinkSettings( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); final File outputFile = fs.file(outputFilePath); @@ -781,7 +779,6 @@ apply plugin: 'kotlin-android' const XcodeProjectBuildContext buildContext = XcodeProjectBuildContext( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); xcodeProjectInterpreter.buildSettingsByBuildContext[buildContext] = { @@ -802,7 +799,6 @@ apply plugin: 'kotlin-android' final String outputFilePath = await project.ios.outputsUniversalLinkSettings( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); final File outputFile = fs.file(outputFilePath); @@ -827,7 +823,6 @@ apply plugin: 'kotlin-android' const XcodeProjectBuildContext buildContext = XcodeProjectBuildContext( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); xcodeProjectInterpreter.buildSettingsByBuildContext[buildContext] = { @@ -838,7 +833,6 @@ apply plugin: 'kotlin-android' testPlistUtils.setProperty(PlistParser.kCFBundleIdentifierKey, r'$(PRODUCT_BUNDLE_IDENTIFIER)'); final String outputFilePath = await project.ios.outputsUniversalLinkSettings( target: 'Runner', - scheme: 'Debug', configuration: 'config', ); final File outputFile = fs.file(outputFilePath);