Unable to build on Xcode - never ending pods errors

Have built apps successfully before from Meteor 1.10, using Xcode 14 on an Intel based mac. Now using an M3, with Xcode 15.4. The meteor build command always works fine. I’ve built it in 2.12, 2.14 and 2.16. I’ve tried specifying --architecture=os.osx.x86_64 and also with no --architecture flag in the build command. I’ve got Google OAuth in the project, but also tried removing it. But building in Xcode (also Android Studio, but that’s lower priority for me), I get “Build Failed” every time. I’ve made multiple changes, searched countless posts, just can’t get it built. The initial errors relate to missing libarclite package, but modified minimum deployment version in the app target and all the pod targets as well to iOS 12, get past that, and then I get: Building for ‘iOS-simulator’, but linking in object file /projects/builds/ios/project/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn[arm64]2) built for ‘iOS’ so then I exclude the arm64 architecture, tried it both in the build settings and in the podfile, seems to get past that and the next Xcode build failed reports multiple errors: Undefined symbol: _CDVPageDidLoadNotification
Undefined symbol: _CDVPluginHandleOpenURLNotification
Undefined symbol: _CDVPluginHandleOpenURLWithAppSourceAndAnnotationNotification
Undefined symbol: OBJC_CLASS$_CDVAppDelegate
Undefined symbol: OBJC_CLASS$_CDVPlugin
Undefined symbol: OBJC_CLASS$_CDVPluginResult
Undefined symbol: OBJC_CLASS$_CDVTimer
Undefined symbol: OBJC_CLASS$_CDVViewController
Undefined symbol: OBJC_CLASS$_CDVWebViewProcessPoolFactory
Undefined symbol: OBJC_METACLASS$_CDVAppDelegate
Undefined symbol: OBJC_METACLASS$_CDVPlugin
Undefined symbol: OBJC_METACLASS$_CDVViewController
Undefined symbol: _SWIFT_CDVCommandStatus_ERROR
Undefined symbol: _SWIFT_CDVCommandStatus_NO_RESULT
Undefined symbol: _SWIFT_CDVCommandStatus_OK so I try modifying Link Binary with Libraries under Build Phases to confirm Cordova.framework, set it to optional, etc. etc. If I manage to get past that i then stumble into a new set of build failed errors: Undefined symbol: OBJC_CLASS$_GTMAppAuthFetcherAuthorization
Undefined symbol: OBJC_CLASS$_GTMKeychain
Undefined symbol: OBJC_CLASS$_GTMOAuth2KeychainCompatibility
Undefined symbol: OBJC_CLASS$_GTMSessionFetcher
Undefined symbol: OBJC_CLASS$_OIDAuthState
Undefined symbol: OBJC_CLASS$_OIDAuthorizationRequest
Undefined symbol: OBJC_CLASS$_OIDAuthorizationService
Undefined symbol: OBJC_CLASS$_OIDIDToken
Undefined symbol: OBJC_CLASS$_OIDServiceConfiguration
Undefined symbol: OBJC_CLASS$_OIDURLQueryComponent
Undefined symbol: OBJC_METACLASS$_GTMAppAuthFetcherAuthorization
Undefined symbol: _OIDOAuthErrorResponseErrorKey
Undefined symbol: _OIDOAuthTokenErrorDomain
Undefined symbol: _OIDResponseTypeCode
Linker command failed with exit code 1 (use -v to see invocation)

I could list all of the many errors I’ve worked through, all of the pod deintegrate and install --repo-updates, but it’s just not making sense to me. First off, I’m way out of my depth attempting to modify Xcode details, much less Android Studio (I have literal nightmares about gradle…) but I’ve chosen to develop my app in Meteor because of the simplified mobile build process, and now I’ve lost that. I’ve done all the prerequisites, I’ve tried different meteor versions, I’ve tried running Xcode via Rosetta, I’ve tried removing accounts-google after fighting with the GoogleSignIn pod and I’m just totally lost and don’t know what to do. Every fix I implement leads to another set of build errors in Xcode. And the worst part is, I can’t go back to my intel based mac, because the only reason I upgraded to M3 was because I couldn’t get a version of Xcode on the Intel mac (do to OS limitations) that allowed me to publish to appstoreconnect.

Apologies for the rant, I’ve been fighting this for a week now and I don’t know what to do.

Could you try this please: Fixing “Linker command failed with exit code 1” | by Amritansh Kaushik | Medium
If I remember right, these need to be ran in the IOS folder of your Meteor project.

1 Like

Thanks for the suggestion @paulishca, I ended up going a different route. I was fortunate in that I hadn’t built the new apple silicon mac too fully and decided the issue might be related to migrating apps, data, etc. from the old intel mac via the apple migration assistant so wiped the new m3 and rebuilt the os from scratch, installed meteor (failed the first go round, but then added Rosetta and opened terminal via rosetta and voila, eureka, tgiw… I know I saw a note from MDG that rosetta shouldn’t be needed, i can share my experience trying to build without if if needed), then created a new app at 2.12 (need node 14.21.3 for use at nodechef - .4 not available it seems?), added the meteor and npm packages I need for the app, copied in my files and got the localhost web app/server functioning.

Then I added prerequisites for an ios build, installed xcode, and when I finally got to the meteor build command line, I found that the resulting build files only had the ios/project/[app-name] created, and no “Pods” folder (which seemed to be one major source of issues initially). No idea why no Pods folder was created but saw it as a good sign.

Then I faced some other xcode issues - first got Sandbox: bash(49283) deny(1) file-read-data on /ios/project/[my-app]/Scripts/copy-www-build-step.sh, so I set enable_user_script_sandboxing in the target build settings to no. finally got the build to succeed but couldn’t get past the launch screen in simulator. The first issue, was that despite using the --server tag in my meteor build command the config.xml populated the content and allow-navigation tags with localhost and not my server url. So I set it explicitly.

Finally, after that error/issue was cleared, the app still hung on the splash/launch sreen, and it turned out here was another setting in the config.xml: . Supposedly the JavaScript code should include a call to navigator.splashscreen.hide() but not sure if that’s an xcode setting I could make or what, so I changed it to “true” and finally got the app running and connected to my external server.

Sorry if this is TMI, maybe some of it will help someone. Thanks again for reaching out.