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 NAME
requires 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