通过CocoaPods添加Google Maps for iOS的Swift项目中的链接器错误

问题描述:

我试图为我正在通过CocoaPods开发的Swift项目添加Google Maps SDK for iOS,因为CocoaPods现在支持Swift。通过CocoaPods添加Google Maps for iOS的Swift项目中的链接器错误

这是我的podfile。

source 'https://github.com/CocoaPods/Specs.git' 
use_frameworks! 
platform :ios, '7.0' 

pod 'Google-Maps-iOS-SDK' 

吊舱安装成功完成后,我可以导入这样import GoogleMaps框架没有任何编译错误。

但是,我继续前进,并添加了一个UIView并将其类设置为GMSMapView,并添加了一个IBOutlet到我的视图控制器并构建项目。我收到以下错误。

链接器命令退出码1失败(使用-v看到调用)

enter image description here

我已经添加和使用用Objective-C像MagicalRecord,MBProgressHUD上斯威夫特项目库,不任何问题。

我上传了演示Xcode项目here

任何方式来解决这个问题?

+0

我试图复制这个问题,但我目前从pod更新中得到以下错误: '[!]无效\'Podfile \'文件:undefined method \'use_frameworks!'为#。更新CocoaPods可能会解决这个问题。' – Brett 2015-02-11 00:43:46

+0

@Brett嗨,我使用的是CocoaPods 0.36 beta 1.我认为这个命令在当前版本的beta 2中被删除了。你将不得不[降级](http:// *。com/a/20489489/1077789)到beta 1('sudo gem install cocoapods -v 0.36.0.beta.1')来安装它,因为没有这个命令,Objective-C pod会被安装为静态库而不是Frameworks。由于Google Maps SDK也是Objective-C库,因此您需要该命令。我在我写的[博客文章](http://iosdevbits.blogspot.com/2014/12/finally-cocoapods-with-swift.html)中进一步解释了这一点。 – Isuru 2015-02-11 07:25:32

+0

我正在建造CocoaPods 0.35(发布)。我刚刚卸载了cocoapods发行版并安装了'cocoapods-0.36.0.beta.2'。我使用我的github示例来测试这个新配置(在删除'Podfile.lock'和'Pods/*'之后),并且它都能够顺畅运行。我阅读了您的博客文章,但我不明白为什么需要'use_frameworks!'才能让Google Maps SDK for iOS与Swift一起使用。 – Brett 2015-02-12 00:52:00

您面临的问题是CocoaPods上的错误和格式错误的podspec的组合。 Check this了解更多信息。

随意使用这个podspec:

https://raw.githubusercontent.com/Reflejo/GoogleMapsPodspec/master/Google-Maps-iOS-SDK.podspec.json

...在你Podfile为:

我相信这个错误是:

pod 'Google-Maps-iOS-SDK', :podspec => "https://raw.githubusercontent.com/Reflejo/GoogleMapsPodspec/master/Google-Maps-iOS-SDK.podspec.json" 
+0

嗨,我只是试过这个。 Pod安装成功,但目标列表仅在Pods项目中显示** Pods **。 – Isuru 2015-02-12 09:25:49

+0

你能澄清你的意思吗? – 2015-02-12 16:43:55

+0

该库已安装[成功](http://i.imgur.com/QUgX7pb.png)。但是在Pods项目的[目标](http://i.imgur.com/ufAxMos.png)中,没有添加框架。 – Isuru 2015-02-14 13:40:15

从谷歌工程师响应现在固定在1.10.0。作为正式支持CocoaPods的一部分,我们更改了iOS CocoaPod的Google Maps SDK的名称。请更新您的Podfile这样的:

source 'https://github.com/CocoaPods/Specs.git' 
platform :ios, '8.3' 
use_frameworks! 

pod 'GoogleMaps', '1.10.0' 

source of this information

注:

尽管如此,修复上述引入了新的警告,请参阅以下link

因此,我个人建议您使用pod 'Google-Maps-iOS-SDK', :podspec => "https://raw.githubusercontent.com/Reflejo/GoogleMapsPodspec/master/Google-Maps-iOS-SDK.podspec.json",直到该错误将在更新版本的Google Maps iOS SDK中修复,或者只需在构建设置标记中添加-Wl,-no_compact_unwind来消除此警告即可。