2015-02-09 78 views
9

我試圖爲我正在通過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:// stackoverflow。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

回答

7

您面臨的問題是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

2

從谷歌工程師響應現在固定在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來消除此警告即可。