From a2a4e9eda42259caba2533dc316fb2b7373c62da Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 2 Nov 2020 20:12:47 -0800 Subject: [PATCH] Revert "Build App.framework directly to build directory (#69612)" (#69641) This reverts commit b77088319acfd6189fb2b4cb37342de251e31201. --- packages/flutter_tools/bin/xcode_backend.sh | 24 ++++++++++--------- .../flutter_tools/lib/src/commands/clean.dart | 2 +- packages/flutter_tools/lib/src/ios/mac.dart | 2 +- packages/flutter_tools/lib/src/project.dart | 5 +--- .../commands.shard/hermetic/clean_test.dart | 4 ++-- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh index 24262a3c7e..f33fe03ac1 100755 --- a/packages/flutter_tools/bin/xcode_backend.sh +++ b/packages/flutter_tools/bin/xcode_backend.sh @@ -179,7 +179,7 @@ is set to release or run \"flutter build ios --release\", then re-run Archive fr ${flutter_engine_flag} \ ${local_engine_flag} \ assemble \ - --output="${BUILT_PRODUCTS_DIR}/" \ + --output="${derived_dir}/" \ ${performance_measurement_option} \ -dTargetPlatform=ios \ -dTargetFile="${target_path}" \ @@ -287,24 +287,26 @@ EmbedFlutterFrameworks() { project_path="${FLUTTER_APPLICATION_PATH}" fi + # Prefer the hidden .ios folder, but fallback to a visible ios folder if .ios + # doesn't exist. + local flutter_ios_out_folder="${project_path}/.ios/Flutter" + local flutter_ios_engine_folder="${project_path}/.ios/Flutter/engine" + if [[ ! -d ${flutter_ios_out_folder} ]]; then + flutter_ios_out_folder="${project_path}/ios/Flutter" + flutter_ios_engine_folder="${project_path}/ios/Flutter" + fi + + AssertExists "${flutter_ios_out_folder}" + # Embed App.framework from Flutter into the app (after creating the Frameworks directory # if it doesn't already exist). local xcode_frameworks_dir="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" RunCommand mkdir -p -- "${xcode_frameworks_dir}" - RunCommand rsync -av --delete --filter "- .DS_Store/" "${BUILT_PRODUCTS_DIR}/App.framework" "${xcode_frameworks_dir}" + RunCommand rsync -av --delete "${flutter_ios_out_folder}/App.framework" "${xcode_frameworks_dir}" # Embed the actual Flutter.framework that the Flutter app expects to run against, # which could be a local build or an arch/type specific build. - # Prefer the hidden .ios folder, but fallback to a visible ios folder if .ios - # doesn't exist. - local flutter_ios_engine_folder="${project_path}/.ios/Flutter/engine" - if [[ ! -d ${flutter_ios_engine_folder} ]]; then - flutter_ios_engine_folder="${project_path}/ios/Flutter" - fi - - AssertExists "${flutter_ios_engine_folder}" - # Copy Xcode behavior and don't copy over headers or modules. RunCommand rsync -av --delete --filter "- .DS_Store/" --filter "- Headers/" --filter "- Modules/" "${flutter_ios_engine_folder}/Flutter.framework" "${xcode_frameworks_dir}/" if [[ "$ACTION" != "install" || "$ENABLE_BITCODE" == "NO" ]]; then diff --git a/packages/flutter_tools/lib/src/commands/clean.dart b/packages/flutter_tools/lib/src/commands/clean.dart index 5e45dbb31b..2dbed2ef6e 100644 --- a/packages/flutter_tools/lib/src/commands/clean.dart +++ b/packages/flutter_tools/lib/src/commands/clean.dart @@ -50,7 +50,7 @@ class CleanCommand extends FlutterCommand { deleteFile(flutterProject.ios.ephemeralDirectory); deleteFile(flutterProject.ios.generatedXcodePropertiesFile); deleteFile(flutterProject.ios.generatedEnvironmentVariableExportScript); - deleteFile(flutterProject.ios.deprecatedCompiledDartFramework); + deleteFile(flutterProject.ios.compiledDartFramework); deleteFile(flutterProject.linux.ephemeralDirectory); deleteFile(flutterProject.macos.ephemeralDirectory); diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index ab48749b2a..dc0a5f2e75 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -539,7 +539,7 @@ Future diagnoseXcodeBuildFailure(XcodeBuildResult result, Usage flutterUsa logger.printError('Your Xcode project requires migration. See https://flutter.dev/docs/development/ios-project-migration for details.'); logger.printError(''); logger.printError('You can temporarily work around this issue by running:'); - logger.printError(' flutter clean'); + logger.printError(' rm -rf ios/Flutter/App.framework'); return; } diff --git a/packages/flutter_tools/lib/src/project.dart b/packages/flutter_tools/lib/src/project.dart index f32a77a9cb..136fdd298a 100644 --- a/packages/flutter_tools/lib/src/project.dart +++ b/packages/flutter_tools/lib/src/project.dart @@ -682,10 +682,7 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject { .childDirectory('Flutter') .childFile('Generated.xcconfig'); - /// No longer compiled to this location. - /// - /// Used only for "flutter clean" to remove old references. - Directory get deprecatedCompiledDartFramework => _flutterLibRoot + Directory get compiledDartFramework => _flutterLibRoot .childDirectory('Flutter') .childDirectory('App.framework'); 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 8c005e6e57..86a5f90c58 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart @@ -48,7 +48,7 @@ void main() { projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true); projectUnderTest.ios.generatedXcodePropertiesFile.createSync(recursive: true); projectUnderTest.ios.generatedEnvironmentVariableExportScript.createSync(recursive: true); - projectUnderTest.ios.deprecatedCompiledDartFramework.createSync(recursive: true); + projectUnderTest.ios.compiledDartFramework.createSync(recursive: true); projectUnderTest.linux.ephemeralDirectory.createSync(recursive: true); projectUnderTest.macos.ephemeralDirectory.createSync(recursive: true); @@ -68,7 +68,7 @@ void main() { expect(projectUnderTest.ios.ephemeralDirectory.existsSync(), isFalse); expect(projectUnderTest.ios.generatedXcodePropertiesFile.existsSync(), isFalse); expect(projectUnderTest.ios.generatedEnvironmentVariableExportScript.existsSync(), isFalse); - expect(projectUnderTest.ios.deprecatedCompiledDartFramework.existsSync(), isFalse); + expect(projectUnderTest.ios.compiledDartFramework.existsSync(), isFalse); expect(projectUnderTest.linux.ephemeralDirectory.existsSync(), isFalse); expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse);