You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When building the app, I get undefined symbol errors, saying that it can't find symbols that exist in AppAuthCore:
ld: Undefined symbols:
_OBJC_CLASS_$_OIDAuthState, referenced from:
in GoogleSignIn.o
_OBJC_CLASS_$_OIDAuthorizationRequest, referenced from:
in GoogleSignIn.o
_OBJC_CLASS_$_OIDAuthorizationService, referenced from:
in GoogleSignIn.o
_OBJC_CLASS_$_OIDIDToken, referenced from:
in GoogleSignIn.o
_OBJC_CLASS_$_OIDServiceConfiguration, referenced from:
in GoogleSignIn.o
_OBJC_CLASS_$_OIDURLQueryComponent, referenced from:
in GoogleSignIn.o
_OIDOAuthErrorResponseErrorKey, referenced from:
+[GIDEMMSupport handleTokenFetchEMMError:completion:] in GoogleSignIn.o
_OIDOAuthTokenErrorDomain, referenced from:
___53-[GIDGoogleUser refreshTokensIfNeededWithCompletion:]_block_invoke.22 in GoogleSignIn.o
_OIDResponseTypeCode, referenced from:
-[GIDSignIn authenticateInteractivelyWithOptions:] in GoogleSignIn.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
This only happens if GoogleSignIn is added as a dependency of multiple targets that end up in the resulting app. If GoogleSignIn is only included into one target, it seems to be OK. But when it's included in multiple targets, I get the error above.
I have created a reproducible sample using the ObjC sample app provided by this repo.
To Reproduce
Steps to reproduce the behavior:
Open the sample app in Xcode
Create another Framework target that the main app depends on
Make the new Framework target depend on GoogleSignIn
Build the app -- see the errors
Or checkout the reproducible sample that I put together and try building it.
The app is basically structured like this in terms of project and dependencies:
cjwirth
changed the title
Undefined symbols when used as transitive dependency (Swift Packages in Xcode)
Undefined symbols when used as dependency of multiple targets (Swift Packages in Xcode)
May 13, 2024
Another workaround that I've had to do (for a different library, but another one made by Google, lol) is to abstract it out so that only the top-level app target is the one that links the library.
So let's say you have OnboardingFramework and LoginFramework, and they both depend on GoogleSignIn. Instead, rework OnboardingFramework and LoginFramework so that they don't link and import GoogleSignIn. You'll give them their own protocols for the methods that you need to call from GoogleSignIn. Then in your top-level app target, you'll create implementations of the protocols you made, passing them into the frameworks when you need it.
Describe the bug
When building the app, I get undefined symbol errors, saying that it can't find symbols that exist in AppAuthCore:
This only happens if GoogleSignIn is added as a dependency of multiple targets that end up in the resulting app. If GoogleSignIn is only included into one target, it seems to be OK. But when it's included in multiple targets, I get the error above.
I have created a reproducible sample using the ObjC sample app provided by this repo.
To Reproduce
Steps to reproduce the behavior:
Or checkout the reproducible sample that I put together and try building it.
The app is basically structured like this in terms of project and dependencies:
Expected behavior
The app should build.
Screenshots
[available on request, but really nothing worth sharing, I don't think?]
Environment
The text was updated successfully, but these errors were encountered: