使用Google-Maps-iOS-SDK(1.8.1)时,架构armv7的未定义符号

我正在尝试使用cocoapods(0.33.1)添加Google-Maps-iOS-SDK(1.8.1)

部署目标版本: iOS 7.0

我已经添加了这个pod: pod 'Google-Maps-iOS-SDK' ,'〜> 1.8'正确下载和安装sdk。

我从这里开始添加头文件和样本地图视图加载代码。

我已经正确添加了API密钥。 在一个视图控制器的- (void)viewDidLoad
我已经添加了以下代码:

  // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:6]; GMSMapView *mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView_.myLocationEnabled = YES; self.view = mapView_; // Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = mapView_; 

我得到这个错误构buildiPhone(不是在模拟器)

未定义的符号为build筑armv7:
“_OBJC_CLASS _ $ _ GMSMarker”,引用自:DealDetailsViewController.o中的objc-class-ref“_OBJC_CLASS _ $ _ GMSMapView”,引用来自:Objc-class-ref在DealDetailsViewController.o中引用的“_OBJC_CLASS_ $ _GMSCameraPosition”在DealDetailsViewController.o“_OBJC_CLASS _ $ _ GMSServices”,引用自:AppDelegate.o中的objc-class-ref ld:符号(s)没有find架构armv7 clang:错误:linker命令失败,退出代码1(使用-v查看调用)

我也尝试使用谷歌地图的iOS SDK的手动安装(没有cocoapods)。 我还添加了链接器标志: -ObjC 。 它build立良好,但在运行时显示select器没有find像这样的错误崩溃:

引发一个NSExceptionexception – – [GMSMapView animateToCameraPosition:]:无法识别的select器发送到实例。

我只需要使用谷歌地图iOS SDK使用cocoapod或手动安装。

我在这里错过了什么?

编辑

如果有与Pods.xcconfig相关的任何内容,那么这里是该文件的内容:

 FRAMEWORK_SEARCH_PATHS = "$(PODS_ROOT)/Google-Maps-iOS-SDK" "$(PODS_ROOT)/Parse-iOS-SDK" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Bolts" "${PODS_ROOT}/Headers/Facebook-iOS-SDK" "${PODS_ROOT}/Headers/Facebook-iOS-SDK/FacebookSDK" "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK" "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK/GoogleMaps" "${PODS_ROOT}/Headers/MBProgressHUD" "${PODS_ROOT}/Headers/Parse-iOS-SDK" "${PODS_ROOT}/Headers/Reachability" "${PODS_ROOT}/Headers/WYPopoverController" OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers" -isystem "${PODS_ROOT}/Headers/Bolts" -isystem "${PODS_ROOT}/Headers/Facebook-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Facebook-iOS-SDK/FacebookSDK" -isystem "${PODS_ROOT}/Headers/Google- Maps-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Google-Maps-iOS-SDK/GoogleMaps" -isystem "${PODS_ROOT}/Headers/MBProgressHUD" -isystem "${PODS_ROOT}/Headers/Parse-iOS-SDK" -isystem "${PODS_ROOT}/Headers/Reachability" -isystem "${PODS_ROOT}/Headers/WYPopoverController" OTHER_LDFLAGS = -ObjC -lc++ -licucore -lsqlite3 -lz -framework AVFoundation -framework AudioToolbox -framework CFNetwork -framework CoreData -framework CoreGraphics -framework CoreLocation -framework CoreText -framework GLKit -framework GoogleMaps -framework ImageIO -framework MobileCoreServices -framework OpenGLES -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -framework UIKit -weak_framework Accounts -weak_framework AdSupport -weak_framework Security -weak_framework Social PODS_ROOT = ${SRCROOT}/Pods 

这看起来像链接器找不到一个sdk库。 标题存在,但sdk对象文件没有链接到项目。

检查这个:

BuildSettings-> Linking->其他链接器标志必须有一个值$(inheritance)

看图片

你有没有按照下面提到的所有步骤?

  1. 启动Xcode并打开一个现有的项目,或创build一个新的项目。 如果您不熟悉iOS,请创build单一视图应用程序,并禁用“使用情节串联图板”,但确保“使用自动引用计数”处于打开状态。
  2. GoogleMaps.frameworkGoogleMaps.framework项目的Frameworks组中。 出现提示时,select将项目复制到目标组的文件夹中。
  3. 在项目中右键单击GoogleMaps.framework ,然后selectShow In Finder。
  4. GoogleMaps.bundle从Resources文件夹GoogleMaps.bundle您的项目中。 我们build议把它放在框架组中。 出现提示时,确保将项目复制到目标组的文件夹未选中。
  5. 从Project Navigator中select您的项目,并select您的应用程序的目标。 打开“构build阶段”选项卡,然后在“链接二进制库”中添加以下框架:AVFoundation.framework
    CoreData.framework
    CoreLocation.framework
    CoreText.framework
    GLKit.framework
    ImageIO.framework
    的libc ++。dylib
    libicucore.dylib
    libz.dylib
    OpenGLES.framework
    QuartzCore.framework
    SystemConfiguration.framework

select你的项目,而不是一个特定的目标,并打开生成设置选项卡。 在Other Linker Flags部分中,添加-ObjC 。 如果这些设置不可见,请将“生成设置”栏中的filter从“基本”更改为“全部”。 最后,将您的API密钥添加到您的AppDelegate。

 #import <GoogleMaps/GoogleMaps.h> 

将以下内容添加到您的application:didFinishLaunchingWithOptions:方法,用您的API密钥replaceAPI_KEY。

 [GMSServices provideAPIKey:@"API_KEY"]; 

来源: Google

我经常得到与其他库相同的错误。 我不能说确切的原因,但是当我在分支之间切换时会发生。

解决方法很简单:

  • 删除由cocoapods生成的工作区
  • 干净的项目派生的数据组织者 – >项目 干净的派生数据
  • 运行pod安装

它总是为我工作。

尝试在目标中的pod文件的平台设置Vs部署目标中玩耍:

 platform :ios, '7.0' 

然后在terminal中运行pod update