From 4fb9ce8414f1c4214cc3dbcba0c29d1805a76c60 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Thu, 27 Feb 2020 12:18:06 -0800 Subject: [PATCH] Clean App.framework, Generated.xcconfig, flutter_export_environment.sh (#51532) --- .../flutter_tools/lib/src/commands/clean.dart | 22 ++++++++----------- packages/flutter_tools/lib/src/ios/mac.dart | 10 --------- .../flutter_tools/lib/src/ios/xcodeproj.dart | 4 ++-- packages/flutter_tools/lib/src/project.dart | 4 ++++ .../commands.shard/hermetic/clean_test.dart | 10 +++++++++ .../general.shard/ios/xcodeproj_test.dart | 8 +++---- packages/flutter_tools/test/src/context.dart | 3 ++- 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/packages/flutter_tools/lib/src/commands/clean.dart b/packages/flutter_tools/lib/src/commands/clean.dart index 5035f9c2ef..da967b0ebe 100644 --- a/packages/flutter_tools/lib/src/commands/clean.dart +++ b/packages/flutter_tools/lib/src/commands/clean.dart @@ -43,20 +43,16 @@ class CleanCommand extends FlutterCommand { deleteFile(flutterProject.dartTool); - final Directory androidEphemeralDirectory = flutterProject.android.ephemeralDirectory; - deleteFile(androidEphemeralDirectory); + deleteFile(flutterProject.android.ephemeralDirectory); - final Directory iosEphemeralDirectory = flutterProject.ios.ephemeralDirectory; - deleteFile(iosEphemeralDirectory); + deleteFile(flutterProject.ios.ephemeralDirectory); + deleteFile(flutterProject.ios.generatedXcodePropertiesFile); + deleteFile(flutterProject.ios.generatedEnvironmentVariableExportScript); + deleteFile(flutterProject.ios.compiledDartFramework); - final Directory linuxEphemeralDirectory = flutterProject.linux.ephemeralDirectory; - deleteFile(linuxEphemeralDirectory); - - final Directory macosEphemeralDirectory = flutterProject.macos.ephemeralDirectory; - deleteFile(macosEphemeralDirectory); - - final Directory windowsEphemeralDirectory = flutterProject.windows.ephemeralDirectory; - deleteFile(windowsEphemeralDirectory); + deleteFile(flutterProject.linux.ephemeralDirectory); + deleteFile(flutterProject.macos.ephemeralDirectory); + deleteFile(flutterProject.windows.ephemeralDirectory); return const FlutterCommandResult(ExitStatus.success); } @@ -73,7 +69,7 @@ class CleanCommand extends FlutterCommand { final Directory xcodeWorkspace = xcodeProject.xcodeWorkspace; final XcodeProjectInfo projectInfo = await xcodeProjectInterpreter.getInfo(xcodeWorkspace.parent.path); for (final String scheme in projectInfo.schemes) { - xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme); + await xcodeProjectInterpreter.cleanWorkspace(xcodeWorkspace.path, scheme); } } catch (error) { globals.printTrace('Could not clean Xcode workspace: $error'); diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index 6e4971ace1..e6b306065c 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -429,16 +429,6 @@ return result.exitCode != 0 && result.stdout.contains('there are two concurrent builds running'); } -String readGeneratedXcconfig(String appPath) { - final String generatedXcconfigPath = - globals.fs.path.join(globals.fs.currentDirectory.path, appPath, 'Flutter', 'Generated.xcconfig'); - final File generatedXcconfigFile = globals.fs.file(generatedXcconfigPath); - if (!generatedXcconfigFile.existsSync()) { - return null; - } - return generatedXcconfigFile.readAsStringSync(); -} - Future diagnoseXcodeBuildFailure(XcodeBuildResult result) async { if (result.xcodeBuildExecution != null && result.xcodeBuildExecution.buildForPhysicalDevice && diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart index d415c39271..108436a509 100644 --- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart @@ -357,8 +357,8 @@ class XcodeProjectInterpreter { } } - void cleanWorkspace(String workspacePath, String scheme) { - _processUtils.runSync([ + Future cleanWorkspace(String workspacePath, String scheme) async { + await _processUtils.run([ _executable, '-workspace', workspacePath, diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index 4a9944ee59..6da9674e86 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -567,6 +567,10 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject { .childDirectory('Flutter') .childFile('Generated.xcconfig'); + Directory get compiledDartFramework => _flutterLibRoot + .childDirectory('Flutter') + .childDirectory('App.framework'); + Directory get pluginRegistrantHost { return isModule ? _flutterLibRoot diff --git a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart index cecbc7d71c..766af14444 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart @@ -44,7 +44,12 @@ void main() { projectUnderTest.dartTool.createSync(recursive: true); projectUnderTest.android.ephemeralDirectory.createSync(recursive: true); + projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true); + projectUnderTest.ios.generatedXcodePropertiesFile.createSync(recursive: true); + projectUnderTest.ios.generatedEnvironmentVariableExportScript.createSync(recursive: true); + projectUnderTest.ios.compiledDartFramework.createSync(recursive: true); + projectUnderTest.linux.ephemeralDirectory.createSync(recursive: true); projectUnderTest.macos.ephemeralDirectory.createSync(recursive: true); projectUnderTest.windows.ephemeralDirectory.createSync(recursive: true); @@ -57,7 +62,12 @@ void main() { expect(buildDirectory.existsSync(), isFalse); expect(projectUnderTest.dartTool.existsSync(), isFalse); expect(projectUnderTest.android.ephemeralDirectory.existsSync(), isFalse); + expect(projectUnderTest.ios.ephemeralDirectory.existsSync(), isFalse); + expect(projectUnderTest.ios.generatedXcodePropertiesFile.existsSync(), isFalse); + expect(projectUnderTest.ios.generatedEnvironmentVariableExportScript.existsSync(), isFalse); + expect(projectUnderTest.ios.compiledDartFramework.existsSync(), isFalse); + expect(projectUnderTest.linux.ephemeralDirectory.existsSync(), isFalse); expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse); expect(projectUnderTest.windows.ephemeralDirectory.existsSync(), isFalse); diff --git a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart index 19b2077a8f..18f3be4646 100644 --- a/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart +++ b/packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart @@ -224,12 +224,12 @@ void main() { 'FLUTTER_XCODE_CODE_SIGN_STYLE': 'Manual', 'FLUTTER_XCODE_ARCHS': 'arm64' }); - when(processManager.runSync( + when(processManager.run( any, workingDirectory: anyNamed('workingDirectory'))) - .thenReturn(ProcessResult(1, 0, '', '')); - xcodeProjectInterpreter.cleanWorkspace('workspace_path', 'Runner'); - final List captured = verify(processManager.runSync( + .thenAnswer((_) => Future.value(ProcessResult(1, 0, '', ''))); + await xcodeProjectInterpreter.cleanWorkspace('workspace_path', 'Runner'); + final List captured = verify(processManager.run( captureAny, workingDirectory: anyNamed('workingDirectory'), environment: anyNamed('environment'))).captured; diff --git a/packages/flutter_tools/test/src/context.dart b/packages/flutter_tools/test/src/context.dart index 44a5e09785..cc211051aa 100644 --- a/packages/flutter_tools/test/src/context.dart +++ b/packages/flutter_tools/test/src/context.dart @@ -386,7 +386,8 @@ class FakeXcodeProjectInterpreter implements XcodeProjectInterpreter { } @override - void cleanWorkspace(String workspacePath, String scheme) { + Future cleanWorkspace(String workspacePath, String scheme) { + return null; } @override