Can't build iOS in Azure DevOps pipeline with anything after FB 10.15 #14296
-
Can't build iOS in Azure DevOps pipeline with anything after FB 10.15 - Just as it says. Took over a project that had been using FB via SPM. We have source and CI/DC via Azure DevOps delivering to AppStore and that has been fine. However, in trying to update the packages, we've found that any version of Firebase after 10.15 will cause the pipeline to fail with a code signing error. Rolling back and it's fine. Looked at with our DevOps person, but we have yet to find a solution, so looking for any ideas or solution from the community. Doesn't seem like we would be the first to run into this but web search hasn't helped so far either. Thanks~! |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 1 reply
-
What is the error? |
Beta Was this translation helpful? Give feedback.
-
Encountering the same problem, did you ever found a solution? I did find a bug report as well, but obviously disabling code signing is not a permanent solution and the 'name=iPhone 16' option mentioned in the last comment did not work for me either. |
Beta Was this translation helpful? Give feedback.
-
Update for those finding this later: for us, the issue was that Firebase added code signing capabilities to the pods, which they couldn't use. So I solved it with disabling code signings for pods again:
|
Beta Was this translation helpful? Give feedback.
-
The issue we ran into with the pipelines building with the latest versions of Crashlytics was because of the configuration, it was trying to sign the Google libraries as if they were our own and causing a conflict. This started showing up on Crashlytics Swift Packages after version 10.15, from what I am assuming from the errors was a switch on the library’s Xcode project from code signing NONE -> Automatic. The second part, why wasn’t it happening in Xcode vs. Pipeline, is taking into consideration that the pipeline uses a Microsoft task called Xcode@5. This task calls the xcodebuild command line for you, based on the parameters you give it. And based on what you have or don’t have there it does what MS engineers thought was best – which isn’t always as expected. Trying to figure that out took some trial and error even when knowing the correct build command line format from building locally on the Mac. The main issue is the way we previously passed the signing cert and profile which was basically entering at step 1 and was causing the build to think everything needed signed. That had to be removed. Now is a good time to say there are 3 steps to an iPhone app build:
After removing the code sign at the start of the process, we needed to create some plist (xml) files that are supplied to the export step 3 and ensure the Xcode@5 task was passed and configured for these instead. Once that was figured out, builds were working again. Examples below. -Sean 3 Steps Command Line Examples: // BUILD // ARCHIVE // EXPORT Passed Export Options Plist Example: ApplicationProperties ApplicationPath Applications/APP-SCHEME-NAME_QA.app Architectures arm64 CFBundleIdentifier com.YOURDOMAIN.APP-SCHEME-NAME.qa SigningIdentity iPhone Distribution: YOUR COMPANY NAME (YOUR-TEAM-KEY1) Team YOUR-TEAM-KEY provisioningProfiles com.YOURDOMAIN.APP-SCHEME-NAME.qa PROVISIONING-PROFILE-UUID-GOES-HERE Name APP-SCHEME-NAME_QA SchemeName APP-SCHEME-NAME_QA method enterprise |
Beta Was this translation helpful? Give feedback.
The issue we ran into with the pipelines building with the latest versions of Crashlytics was because of the configuration, it was trying to sign the Google libraries as if they were our own and causing a conflict. This started showing up on Crashlytics Swift Packages after version 10.15, from what I am assuming from the errors was a switch on the library’s Xcode project from code signing NONE -> Automatic.
The second part, why wasn’t it happening in Xcode vs. Pipeline, is taking into consideration that the pipeline uses a Microsoft task called Xcode@5. This task calls the xcodebuild command line for you, based on the parameters you give it. And based on what you have or don’t have there …