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 > Swift Compiler - Code Generation > 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 的注册处理程序”错误