3

我正在尝试将 Google 登录合并到我的应用中。

我已经下载了 Signin SDK 和其中的示例应用程序构建并正常工作。

我试图让 SDK 工作,它现在完全按照示例应用程序进行设置。

但是我收到以下错误:

架构 arm64 的未定义符号:“_OBJC_CLASS_$_GSDK_GTMSessionFetcher”,引用自:GoogleSignIn 中的 objc-class-ref(GIDSignIn.o) GoogleSignIn(GIDRuntimeConfigFetcher.o) 中的 objc-class-ref “_OBJC_CLASS_$_GSDK_GTMOAuth2Keychain”,引用自:objc- GoogleSignIn(GIDSignIn.o) 中的类引用“_OBJC_CLASS_$_GSDK_GTMOAuth2SignIn”,引用自:GoogleSignIn(GIDAuthentication.o) 中的 objc-class-ref GoogleSignIn(GIDSignIn.o) 中的 objc-class-ref“_OBJC_CLASS_$_GSDK_OpenInChromeController”,引用来自:GoogleSignIn 中的objc-class-ref(GIDSignIn.o) "_OBJC_CLASS_$_GSDK_GTMOAuth2ViewControllerTouch",引用自:GoogleSignIn(GIDSignIn.o) 中的objc-class-ref,"_OBJC_CLASS_$_GSDK_GTMSessionFetcherService",引用自:objc-class-ref in GoogleSignIn(GIDSignIn.o) "_GSDK_NSClassFromString",引用自:l011 in GoogleSignIn(GIDSignIn.o) l059 in GoogleSignIn(GIDSignIn.o) "_OBJC_CLASS_$_GSDK_GTMOAuth2Authentication",引用自:objc-class-ref in GoogleSignIn(GIDAuthentication.o) objc-class-ref in GoogleSignIn(GIDSignIn.o) ld:未找到架构 arm64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)未找到架构 arm64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)未找到架构 arm64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

因此,我从示例应用程序中删除了 GoogleSignInDependencies.framework 以查看差异,我收到以下错误:

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_GTMOAuth2KeychainCompatibility", referenced from: objc-class-ref in GoogleSignIn(GIDAuthStateMigration_bdf842e92d17b12b5f020e0e721bd017.o) "_OBJC_CLASS_$_OIDURLQueryComponent", referenced from: objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_CLASS_ $_OIDServiceConfiguration", referenced from: objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OIDResponseTypeCode", referenced from: -[GIDSignIn authenticateInteractivelyWithOptions:] in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_CLASS_$_OIDAuthorizationService", referenced from: objc- GoogleSignIn 中的类引用(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_CLASS_$_GTMSessionFetcher", referenced from: objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_CLASS_$_OIDAuthorizationRequest", referenced from: objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_CLASS_$_GTMAppAuthFetcherAuthorization", referenced from: _OBJC_CLASS_$_GTMAppAuthFetcherAuthorizationWithEMMSupport in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) objc-class-ref in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) objc-class-ref in GoogleSignIn(GIDAuthStateMigration_bdf842e92d17b12b5f020e0e721bd017.o) (maybe you meant: _OBJC_CLASS_$_GTMAppAuthFetcherAuthorizationWithEMMSupport, _OBJC_CLASS_$_GTMAppAuthFetcherAuthorizationEMMChainedDelegate ) "_OIDOAuthTokenErrorDomain", referenced from: ___46-[GIDAuthentication refreshTokensWithHandler:]_block_invoke in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) " _OBJC_CLASS_$_OIDIDToken", referenced from: objc-class-ref in GoogleSignIn(GIDGoogleUser_2bdd4a676c033bc6ca21970e75d9159c.o) objc-class-ref in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) objc-class-ref in GoogleSignIn(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) "_OBJC_METACLASS_$_GTMAppAuthFetcherAuthorization",参考自:_OBJC_METACLASS_$_GTMAppAuthFetcherAuthorizationWithEMMSupport in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) (maybe you meant: _OBJC_METACLASS_$_GTMAppAuthFetcherAuthorizationEMMChainedDelegate, _OBJC_METACLASS_$_GTMAppAuthFetcherAuthorizationWithEMMSupport ) "_OIDOAuthErrorResponseErrorKey", referenced from: +[GIDAuthentication handleTokenFetchEMMError:completion:] in GoogleSignIn(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) "_OBJC_CLASS_$_GTMKeychain" ,引用自:GoogleSignIn 中的 objc-class-ref(GIDAuthStateMigration_bdf842e92d17b12b5f020e0e721bd017.o) "_OBJC_CLASS_$_OIDAuthState",引用自:GoogleSignIn 中的objc-class-ref(GIDAuthentication_7b83cc27af8929ec7e4c9760d73a0f31.o) GoogleSignIn 中的 objc-class-ref(GIDSignIn_f05654be6d1b2af59ab6df426a0c4eb9.o) ld:未找到架构 x86_64 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

不同之处似乎是我的应用程序使用了不同的符号,即带有 GSDK 的符号。有人可以告诉我它们是什么以及我如何控制这种差异吗?

非常感谢保罗

4

2 回答 2

2

通过确保正确的框架位于给定文件夹中并且项目实际使用它们来解决此错误。框架搜索路径正在挑选一些过时的框架。清理干净后,它就起作用了。

于 2020-03-27T14:44:24.100 回答
0

我通过将GoogleSignin.framework -> Modules -> Module.modulemap中列出的所有框架添加到Link Binary with Libraries来解决它

于 2021-03-26T13:16:34.180 回答