Skip to content

Commit b770883

Browse files
authored
Build App.framework directly to build directory (flutter#69612)
1 parent 872c9d7 commit b770883

File tree

5 files changed

+19
-18
lines changed

5 files changed

+19
-18
lines changed

packages/flutter_tools/bin/xcode_backend.sh

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ is set to release or run \"flutter build ios --release\", then re-run Archive fr
179179
${flutter_engine_flag} \
180180
${local_engine_flag} \
181181
assemble \
182-
--output="${derived_dir}/" \
182+
--output="${BUILT_PRODUCTS_DIR}/" \
183183
${performance_measurement_option} \
184184
-dTargetPlatform=ios \
185185
-dTargetFile="${target_path}" \
@@ -287,26 +287,24 @@ EmbedFlutterFrameworks() {
287287
project_path="${FLUTTER_APPLICATION_PATH}"
288288
fi
289289

290-
# Prefer the hidden .ios folder, but fallback to a visible ios folder if .ios
291-
# doesn't exist.
292-
local flutter_ios_out_folder="${project_path}/.ios/Flutter"
293-
local flutter_ios_engine_folder="${project_path}/.ios/Flutter/engine"
294-
if [[ ! -d ${flutter_ios_out_folder} ]]; then
295-
flutter_ios_out_folder="${project_path}/ios/Flutter"
296-
flutter_ios_engine_folder="${project_path}/ios/Flutter"
297-
fi
298-
299-
AssertExists "${flutter_ios_out_folder}"
300-
301290
# Embed App.framework from Flutter into the app (after creating the Frameworks directory
302291
# if it doesn't already exist).
303292
local xcode_frameworks_dir="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
304293
RunCommand mkdir -p -- "${xcode_frameworks_dir}"
305-
RunCommand rsync -av --delete "${flutter_ios_out_folder}/App.framework" "${xcode_frameworks_dir}"
294+
RunCommand rsync -av --delete --filter "- .DS_Store/" "${BUILT_PRODUCTS_DIR}/App.framework" "${xcode_frameworks_dir}"
306295

307296
# Embed the actual Flutter.framework that the Flutter app expects to run against,
308297
# which could be a local build or an arch/type specific build.
309298

299+
# Prefer the hidden .ios folder, but fallback to a visible ios folder if .ios
300+
# doesn't exist.
301+
local flutter_ios_engine_folder="${project_path}/.ios/Flutter/engine"
302+
if [[ ! -d ${flutter_ios_engine_folder} ]]; then
303+
flutter_ios_engine_folder="${project_path}/ios/Flutter"
304+
fi
305+
306+
AssertExists "${flutter_ios_engine_folder}"
307+
310308
# Copy Xcode behavior and don't copy over headers or modules.
311309
RunCommand rsync -av --delete --filter "- .DS_Store/" --filter "- Headers/" --filter "- Modules/" "${flutter_ios_engine_folder}/Flutter.framework" "${xcode_frameworks_dir}/"
312310
if [[ "$ACTION" != "install" || "$ENABLE_BITCODE" == "NO" ]]; then

packages/flutter_tools/lib/src/commands/clean.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class CleanCommand extends FlutterCommand {
5050
deleteFile(flutterProject.ios.ephemeralDirectory);
5151
deleteFile(flutterProject.ios.generatedXcodePropertiesFile);
5252
deleteFile(flutterProject.ios.generatedEnvironmentVariableExportScript);
53-
deleteFile(flutterProject.ios.compiledDartFramework);
53+
deleteFile(flutterProject.ios.deprecatedCompiledDartFramework);
5454

5555
deleteFile(flutterProject.linux.ephemeralDirectory);
5656
deleteFile(flutterProject.macos.ephemeralDirectory);

packages/flutter_tools/lib/src/ios/mac.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ Future<void> diagnoseXcodeBuildFailure(XcodeBuildResult result, Usage flutterUsa
539539
logger.printError('Your Xcode project requires migration. See https://flutter.dev/docs/development/ios-project-migration for details.');
540540
logger.printError('');
541541
logger.printError('You can temporarily work around this issue by running:');
542-
logger.printError(' rm -rf ios/Flutter/App.framework');
542+
logger.printError(' flutter clean');
543543
return;
544544
}
545545

packages/flutter_tools/lib/src/project.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,10 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
682682
.childDirectory('Flutter')
683683
.childFile('Generated.xcconfig');
684684

685-
Directory get compiledDartFramework => _flutterLibRoot
685+
/// No longer compiled to this location.
686+
///
687+
/// Used only for "flutter clean" to remove old references.
688+
Directory get deprecatedCompiledDartFramework => _flutterLibRoot
686689
.childDirectory('Flutter')
687690
.childDirectory('App.framework');
688691

packages/flutter_tools/test/commands.shard/hermetic/clean_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void main() {
4848
projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true);
4949
projectUnderTest.ios.generatedXcodePropertiesFile.createSync(recursive: true);
5050
projectUnderTest.ios.generatedEnvironmentVariableExportScript.createSync(recursive: true);
51-
projectUnderTest.ios.compiledDartFramework.createSync(recursive: true);
51+
projectUnderTest.ios.deprecatedCompiledDartFramework.createSync(recursive: true);
5252

5353
projectUnderTest.linux.ephemeralDirectory.createSync(recursive: true);
5454
projectUnderTest.macos.ephemeralDirectory.createSync(recursive: true);
@@ -68,7 +68,7 @@ void main() {
6868
expect(projectUnderTest.ios.ephemeralDirectory.existsSync(), isFalse);
6969
expect(projectUnderTest.ios.generatedXcodePropertiesFile.existsSync(), isFalse);
7070
expect(projectUnderTest.ios.generatedEnvironmentVariableExportScript.existsSync(), isFalse);
71-
expect(projectUnderTest.ios.compiledDartFramework.existsSync(), isFalse);
71+
expect(projectUnderTest.ios.deprecatedCompiledDartFramework.existsSync(), isFalse);
7272

7373
expect(projectUnderTest.linux.ephemeralDirectory.existsSync(), isFalse);
7474
expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse);

0 commit comments

Comments
 (0)