2015-02-09 3 views
9

Ich versuche Google Maps SDK for iOS für ein Swift-Projekt hinzuzufügen, an dem ich über CocoaPods arbeite, da CocoaPods jetzt Swift unterstützt.Linker-Fehler in einem Swift-Projekt mit Google Maps für iOS hinzugefügt über CocoaPods

Hier ist mein Podfile.

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

pod 'Google-Maps-iOS-SDK' 

Pod Installation erfolgreich abgeschlossen wurde, und ich konnte den Rahmen wie diese import GoogleMaps ohne Kompilierungsfehlern importieren.

Aber dann ging ich weiter und fügte eine UIView hinzu und legte seine Klasse auf GMSMapView und fügte ein IBOutlet zu meinem View-Controller hinzu und baute das Projekt. Ich erhalte den folgenden Fehler.

Linker Befehl fehlgeschlagen mit Exit-Code 1 (Verwendung -v Aufruf zu sehen)

enter image description here

Ich habe hinzugefügt und benutzten Bibliotheken geschrieben in Objective-C wie MagicalRecord, MBProgressHUD auf Swift Projekte ohne jedes Problem.

Ich habe ein Demo-Xcode-Projekt here als auch hochgeladen.

Jede Möglichkeit, dies zu lösen?

+0

Ich versuche, dieses Problem zu replizieren, aber ich erhalte derzeit den folgenden Fehler von Pod Update: '[!] Invalid \' Podfile \ 'file: undefined Methode \' use_frameworks! ' für # . Die Aktualisierung von CocoaPods könnte das Problem beheben. – Brett

+0

@Brett Hallo, ich benutze CocoaPods 0.36 Beta 1. Ich denke, dass der Befehl in Beta 2 entfernt wurde, was die aktuelle Version ist. Sie müssten [downgrade] (http: // stackoverflow.com/a/20489489/1077789) zu beta 1 ('sudo gem install cocoapods -v 0.36.0 beta1'), um dies zu installieren, da ohne diesen Befehl die Objective-C-Pods als statische Bibliotheken anstelle von Frameworks installiert werden. Da Google Maps SDK auch eine Objective-C-Bibliothek ist, benötigen Sie diesen Befehl. Ich erklärte das ein wenig weiter in einem [Blogpost] (http://iosdevbits.blogspot.com/2014/12/finally-cocoapods-with-swift.html), den ich schrieb. – Isuru

+0

Ich baute mit CocoaPods 0.35 (Release). Ich habe gerade die Veröffentlichung von cocaapods deinstalliert und 'cocoapods-0.36.0β2' installiert. Ich habe mein GitHub-Sample benutzt, um diese neue Konfiguration zu testen (nach dem Entfernen von 'Podfile.lock' und' Pods/*') und alles hat gut funktioniert. Ich habe deinen Blogpost gelesen und ich verstehe nicht, warum du das 'use_frameworks!' Brauchst, damit Google Maps SDK für iOS mit Swift funktioniert. – Brett

Antwort

7

Das Problem, mit dem Sie konfrontiert sind, ist eine Kombination aus einem Fehler in CocoaPods und einer fehlerhaften podspec. Check this für weitere Informationen.

Fühlen Sie sich frei, diese podspec zu verwenden:

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

... in Ihrem Podfile als:

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

Hallo, ich habe es gerade versucht. Die Pod-Installation ist erfolgreich, aber die Ziele-Liste zeigt nur ** Pods ** im Pods-Projekt. – Isuru

+0

Kannst du erklären, was du damit meinst? –

+0

Die Bibliothek wird [erfolgreich] installiert (http://i.imgur.com/QUgX7pb.png). In den [Targets] (http://i.imgur.com/ufAxMos.png) des Pods-Projekts wurde jedoch kein Framework hinzugefügt. – Isuru

2

Antwort von einem Google-Ingenieur:

ich diesen Fehler glauben jetzt in 1.10.0 behoben. Im Zuge der Umstellung auf die offizielle Unterstützung von CocoaPods haben wir den Namen des Google Maps SDK für iOS CocoaPod geändert. Bitte aktualisieren Sie Ihre Podfile wie folgt aus:

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

pod 'GoogleMaps', '1.10.0' 

(source of this information)

Hinweis:

Dennoch über das Update eine neue Warnung führt, dass die angebotenen link sehen.

Also ich persönlich empfehle Ihnen, bleiben Sie mit pod 'Google-Maps-iOS-SDK', :podspec => "https://raw.githubusercontent.com/Reflejo/GoogleMapsPodspec/master/Google-Maps-iOS-SDK.podspec.json", bis der Fehler in einer neueren Version des Google Maps iOS SDK behoben wird, oder einfach diese Warnung durch Hinzufügung -Wl,-no_compact_unwind in Build-Einstellungen Flags zum Schweigen gebracht.