使用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)
你有没有按照下面提到的所有步骤?
- 启动Xcode并打开一个现有的项目,或创build一个新的项目。 如果您不熟悉iOS,请创build单一视图应用程序,并禁用“使用情节串联图板”,但确保“使用自动引用计数”处于打开状态。
- 将
GoogleMaps.framework
包GoogleMaps.framework
项目的Frameworks组中。 出现提示时,select将项目复制到目标组的文件夹中。 - 在项目中右键单击
GoogleMaps.framework
,然后selectShow In Finder。 - 将
GoogleMaps.bundle
从Resources文件夹GoogleMaps.bundle
您的项目中。 我们build议把它放在框架组中。 出现提示时,确保将项目复制到目标组的文件夹未选中。 - 从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
。