Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Xcode legacy build system for iOS builds (#21901) #21994

Merged
merged 1 commit into from Sep 18, 2018

Conversation

cbracken
Copy link
Member

Xcode 10 introduces a new build system which includes stricter checks on
duplicate build outputs.

When plugins are in use, there are two competing build actions that copy
Flutter.framework into the build application Frameworks directory:

  1. The Embed Frameworks build phase for the Runner project
  2. The [CP] Embed Pods Frameworks build phase that pod install creates
    in the project.

Item (1) is there to ensure the framework is copied into the built app
in the case where there are no plugins (and therefore no CocoaPods
integration in the Xcode project). Item (2) is there because Flutter's
podspec declares Flutter.framework as a vended_framework, and CocoaPods
automatically adds a copy step for each such vended_framework in the
transitive closure of CocoaPods dependencies.

As an immediate fix, we opt back into the build system used by Xcode 9
and earlier. Longer term, we need to update our templates and
flutter_tools to correctly handle this situation.

See: #20685

Xcode 10 introduces a new build system which includes stricter checks on
duplicate build outputs.

When plugins are in use, there are two competing build actions that copy
Flutter.framework into the build application Frameworks directory:

  1. The Embed Frameworks build phase for the Runner project
  2. The [CP] Embed Pods Frameworks build phase that pod install creates
     in the project.

Item (1) is there to ensure the framework is copied into the built app
in the case where there are no plugins (and therefore no CocoaPods
integration in the Xcode project). Item (2) is there because Flutter's
podspec declares Flutter.framework as a vended_framework, and CocoaPods
automatically adds a copy step for each such vended_framework in the
transitive closure of CocoaPods dependencies.

As an immediate fix, we opt back into the build system used by Xcode 9
and earlier. Longer term, we need to update our templates and
flutter_tools to correctly handle this situation.

See: flutter#20685
@cbracken
Copy link
Member Author

Note this is a re-land of #21901, but with the addition that the workspace setting is only applied when the project has a workspace. The previous patch broke the devicelab complex scroll benchmark, which does not include a workspace.

@cbracken cbracken merged commit f8c50ea into flutter:master Sep 18, 2018
@cbracken cbracken deleted the use-legacy-xcode-build branch September 18, 2018 17:05
hereisderek added a commit to hereisderek/flutter that referenced this pull request Sep 18, 2018
…dle-fix

* commit '3c22d7b025642abd865160970d39f8c5ba7d3162':
  clarify how to display an image with a specific density (flutter#21152)
  Roll engine 9e315e6..2e8e96f (2 commits) (flutter#22005)
  Make helper and error text separate widgets, make error and counter live region (flutter#21752)
  Use Xcode legacy build system for iOS builds (flutter#21901) (flutter#21994)
  Run logcat through shell (flutter#21977)
  Add back screenshot extension that was temporarily disabled. (flutter#21828)
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants