mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

When iOS and macOS Flutter apps build, they use [Xcode Run Scripts](https://developer.apple.com/documentation/xcode/running-custom-scripts-during-a-build) to call do various logic. For iOS, the Run Scripts calls a bash file ([xcode_backend.sh](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.sh)), which then calls a dart file ([xcode_backend.dart](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart)). `xcode_backend.dart` then calls `flutter assemble`. For macOS, the Run Scripts calls a bash file ([macos_assemble.sh](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/macos_assemble.sh)), which then calls `flutter assemble` directly. This PR changes `macos_assemble.sh` to call `xcode_backend.dart` like it does for iOS so code can be shared between them and written in dart instead of bash. Fixes https://github.com/flutter/flutter/issues/168033. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
42 lines
1.2 KiB
Bash
Executable File
42 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2014 The Flutter Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# ---------------------------------- NOTE ---------------------------------- #
|
|
#
|
|
# Please keep the logic in this file consistent with the logic in the
|
|
# `xcode_backend.sh` script (used for iOS projects) in the same directory.
|
|
#
|
|
# -------------------------------------------------------------------------- #
|
|
|
|
# exit on error, or usage of unset var
|
|
set -euo pipefail
|
|
|
|
# Needed because if it is set, cd may print the path it changed to.
|
|
unset CDPATH
|
|
|
|
function follow_links() (
|
|
cd -P "$(dirname -- "$1")"
|
|
file="$PWD/$(basename -- "$1")"
|
|
while [[ -h "$file" ]]; do
|
|
cd -P "$(dirname -- "$file")"
|
|
file="$(readlink -- "$file")"
|
|
cd -P "$(dirname -- "$file")"
|
|
file="$PWD/$(basename -- "$file")"
|
|
done
|
|
echo "$file"
|
|
)
|
|
|
|
PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")"
|
|
BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
|
|
FLUTTER_ROOT="$BIN_DIR/../../.."
|
|
DART="$FLUTTER_ROOT/bin/dart"
|
|
|
|
# Main entry point.
|
|
if [[ $# == 0 ]]; then
|
|
"$DART" "$BIN_DIR/xcode_backend.dart" "build" "macos"
|
|
else
|
|
"$DART" "$BIN_DIR/xcode_backend.dart" "$@" "macos"
|
|
fi
|