Google 登录 CocoaPods 在 Swift 中安装?

Posted

技术标签:

【中文标题】Google 登录 CocoaPods 在 Swift 中安装?【英文标题】:Google Sign in CocoaPods Install in Swift? 【发布时间】:2015-08-26 09:56:38 【问题描述】:

我目前正在开发一个基于 Swift 的应用程序,该应用程序混合使用了 Objective-C 和基于 Swift 的 Cocoapods。 我的Podfile 看起来像这样:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'
use_frameworks!

pod 'SDWebImage', '~> 3.6'
pod 'Alamofire', '~> 1.2'
pod 'Google/SignIn'

在我添加 Google 登录之前,我的 pod 运行良好。 当我执行pod install 时,出现以下错误:

[!] The 'Pods' target has transitive dependencies that include static
binaries: (~/Pods/GoogleAppUtilities/Libraries/libOpenInChrome.a, 
~/Pods/GoogleAuthUtilities/Libraries/libGTMOAuth2_internal.a, 
~/Pods/GoogleAuthUtilities/Libraries/libGTMOAuth2_external.a, 
~/Pods/GoogleNetworkingUtilities/Libraries/libGTMSessionFetcher_full.a, 
~/Pods/GoogleNetworkingUtilities/Libraries/libGTMSessionFetcher_core.a, 
~/Pods/GoogleSymbolUtilities/Libraries/libGSDK_Overload.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_iPhone.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_core.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_UIFont+LineHeight.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_SystemVersion.a, 
~/GoogleUtilities/Libraries/libGTM_StringEncoding.a, 
~/GoogleUtilities/Libraries/libGTM_RoundedRectPath.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_Regex.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_NSStringXML.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_NSStringhtml.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_NSScannerJSON.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_NSDictionary+URLArguments.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_KVO.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_GTMURLBuilder.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_DebugUtils.a, 
~/Pods/GoogleUtilities/Libraries/libGTM_AddressBook.a, and 
~/Pods/GoogleUtilities/Libraries/libGTMStackTrace.a)

另外,一旦我添加了 Google 登录,我的其他 pod 的所有模块图和伞形标题都会消失,从而破坏所有这些。

来自 Cocoapods 的This issue 似乎将此问题引用为与我对 !use_frameworks 的使用有关,但仅在 pod 发布端提出了一种解决方法 (--use-libraries),而不是从用户的角度来看。这是我需要等待 Google 在他们的 podspec 中修复的问题,还是我可以做些什么来让 Sign-in pod 正常工作?

如果没有,Google 是否仍然提供在不使用 Cocoapods 的情况下手动安装此 SDK 的方法?

【问题讨论】:

没有 cocoapods 的 Google 登录:***.com/questions/30783709/… 谢谢!这将在此期间起作用,但最好在 Cocoapods 中启动并运行它。 @thelaws 使用 Google Cloud Message 的任何替代方法? @willrichman 我们最初确实让它与 cocoapods 一起运行,它只是没有使用 use_frameworks 标志构建(与您的错误相同)。 @Ana 是的,如果您使用 !use_frameworks 标志,似乎 Google 的任何 pod 都不会安装,如果您的项目使用 Swift 并使用 Obj-C pod,则需要此标志。 【参考方案1】:

我通过将它添加到我的桥接头来让它工作:

#import <GooglePlus/GooglePlus.h>
#import <GoogleOpenSource/GoogleOpenSource.h>

然后 swift 可以访问 google 登录 :)

【讨论】:

一定要配置项目使用Build Settings &gt; Swift Compiler - Code Generation &gt; Objective-C Bridging Header 中的桥接头【参考方案2】:

在 pod 下面试试

pod 'GoogleSignIn', '~> 2.2'

【讨论】:

[!] Unable to find a specification for GoogleSignIn (~> 2.2)``【参考方案3】:

我回答这个问题已经很晚了,但看起来pod install 问题是 Cocoapods 本身的问题。我将 Cocoapods 更新到了最新版本(现在是 0.39.0),并且能够安装所有 Google pod。然后,我可以按照 niebloomj 在this answer 中的建议向我的桥接头添加行,并访问 Swift 中的所有库。

【讨论】:

【参考方案4】:

在另一个项目上运行“pod lib lint”时遇到了同样的错误。我通过包含 --use-libraries 和 --allow-warnings 命令行指令来修复它。也许这可以帮助您解决问题。

pod lib lint --use-libraries --allow-warnings

【讨论】:

据我所知,这就是 Google 在创建 pod 时应该做的事情。有没有一种我不知道的方法可以在 Podfile 或 pod install 期间添加这个?【参考方案5】:

不久前我遇到了同样的错误。我刚删了

use_frameworks!

来自 podfile,现在工作正常。

【讨论】:

不幸的是,如果不破坏我的 Swift 项目中的其他 Objective-C pod,我就无法做到这一点。看来此修复程序已提交给 Google。

以上是关于Google 登录 CocoaPods 在 Swift 中安装?的主要内容,如果未能解决你的问题,请参考以下文章

在没有 Cocoapods 的情况下手动集成 Firebase 和 Google Sign In SDK 时出现重复符号

Cocoapods安装错误 - 卷曲:(56)Recv失败:由对等方重置连接

Google 登录在 iOS 中不起作用 - 无效的 GOOGLE_APP_ID 错误

Google Analytics(分析)iOS和Alamofire以及cocoapods

Firebase/Admob 安装指南与 Cocoapods 网站上的 pod 与 Google 上的 Firebase 安装指南

使用 GIDSignIn 登录时出现“没有 URL 方案 com-google-gidconsent 的注册处理程序”错误