Apple's frequent Xcode updates can cause build errors like missing arm64 symbols, deployment target warnings, and signing issues due to incompatibilities with components or plugins. To resolve, build locally in batch mode with a clean repo, ensure matching CocoaPods versions between local and build automation (install via pre-build script if needed), and apply any local Xcode changes to the build automation project. If issues persist, contact Unity support.
Background
- Apple frequently updates Xcode and deprecates older versions, obliging developers to use the newer versions when publishing their apps.
Symptoms
Errors after migrating to a new version of Xcode, we often see errors similar to these:
-
ld: symbol(s) not found for architecture arm64.
-
warning: The iOS deployment target *** is set to *** but the range of supported deployment target versions is *** to ***:
warning: The iOS deployment target 'IPHONEOSDEPLOYMENTTARGET' is set to 10.0, but the range of supported deployment target versions is 11.0 to 16.1.99
-
Signing for
DEPENDENCY POD NAMErequires a development team.error: Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')
Causes
While not exclusively the cause, these errors often appear when changing Xcode versions if some components, packages, or plugins are not compatible with the new version.
Resolution
The first step is to ensure you can build locally in batch mode with a clean clone of the repository (no locally cached library) and build the Xcode project without any additional changes beyond what you are doing in your Build Automation targets.
After building successfully locally in batch mode with the target Xcode version, ensure the version of cocoapods you are using locally matches the one used in Build Automation and if not, install it using the following pre-build script (this example is for cocoapods version 1.12.0). Pre-build scripts can be configured in the advanced configuration tab for your target:
gem install cocoapods -v 1.12.0 echo "current cocoapods version: " gem which cocoapods
You can check your local version of Cocoapods using this command at the terminal:
pod --version
Also, ensure that any changes you apply to the local Xcode project before building are applied to the project in Build Automation as well.
If the above steps do not help resolve the issue, please open a support ticket from the Support section of the Unity Dashboard so the support team can investigate further.
More Information