我已成功将sdk
与我的应用集成。
我的应用程序旨在与Google Maps sdk for iOS6
一起运行,
对于UIMapKit
4.3和5.x,使用Apple iOS
。
自从我添加了google maps
框架,
ios 4.3将不再运行。
我将GLKit.framework
和GoogleMaps.framework
更改为“可选”,
在应用程序开始之前我得到dyld: Symbol not found: _NSFileProtectionCompleteUntilFirstUserAuthentication
。
需要你的帮助:-)
答案 0 :(得分:3)
我的应用在iOS 4.3上运行正常,GLKit.framework
和GoogleMaps.framework
设置为可选,如果我删除了对Google API的所有调用。
NSFileProtectionCompleteUntilFirstUserAuthentication
的引用是否可能是由您的某些其他代码或其他框架引起的?
<强>更新强>
其实上面的错误。我忘了在the instructions的第7步中包含-ObjC
链接器标志。没有-ObjC
,该应用程序可以在iOS 4.3上正常运行。如果没有iOS 6上的-ObjC
标志,对[GMSServices provideAPIKey]
的调用会成功,但对[GMSMapView mapWithFrame:camera:]
的调用将无声地失败(返回nil),因此这不是一个选项。
有了-ObjC
标志,在iOS 4.3上我得到了与_NSFileProtectionCompleteUntilFirstUserAuthentication
相同的错误。
我尝试将-ObjC
更改为-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps
,仅强制加载Google Maps API而不是其他库,但在iOS 4.3上仍然无法加载。
我认为-ObjC
或-force_load
覆盖了使GoogleMaps.framework
成为可选项的设置。
此外,在iOS 5.0上,我收到类似_NSURLIsExcludedFromBackupKey
的错误。不过,我认为它可以在iOS 5.1上运行。 @ tomeron11,你用什么版本的5.x进行测试?
更新2:
感觉就像一个可怕的黑客攻击,但是将以下内容添加到项目中的一个.m文件允许它在iOS 5.0上运行:
NSString* const NSURLIsExcludedFromBackupKey = @"NSURLIsExcludedFromBackupKey";
这似乎似乎导致iOS 6.0上出现问题,即使该符号已定义两次,但我不确定它是否可以信任。
对于iOS 4.3,我尝试通过添加:
来做相同的操作NSString* const NSFileProtectionCompleteUntilFirstUserAuthentication =
@"NSFileProtectionCompleteUntilFirstUserAuthentication";
这会停止关于_NSFileProtectionCompleteUntilFirstUserAuthentication
的错误,但之后我收到以下错误:
dyld: Symbol not found: _OBJC_CLASS_$_NSMutableOrderedSet
我不确定是否有办法欺骗链接器在iOS 4.3上看到NSMutableOrderedSet的虚拟版本。
更新3:
SDK文档说明了minimum supported platform is iOS 5.1。
Google有closed the bug report as WontFix,因此似乎没有办法让它在5.0或更低版本上运行。
更新4:
Google有reopened the bug as an Enhancement。
更新5:
SDK的最新版本1.1.0现在不再在iOS 5.0上启动时崩溃。
然而,Google will not be fixing the crash on iOS 4.x。
由于SDK仅正式支持iOS 5.1+,虽然它在iOS 5.0上启动时不再崩溃,但如果您尝试创建GMSMapView
,则会崩溃并显示错误消息:
适用于iOS的Google Maps SDK仅支持iOS 5.1 +
如果您使用的hack在5.0上启动时不会崩溃,即:
NSString* const NSURLIsExcludedFromBackupKey = @"NSURLIsExcludedFromBackupKey";
然后SDK将在iOS 5.0上运行。它似乎有效,但它可能不是一个好主意,因为它没有得到谷歌的正式支持。
答案 1 :(得分:0)
我的Foundation.framework和UIKit.framework(UIActivityViewController在1.5 GMSdk中也崩溃了......)设置在模式“选项”中(在组合框中没有看到弱点)。 NSMutableOrdererSet和NSURLIsExcludedFromBackupKey位于此框架组件中。 我不会检查这个解决方案在ios上的工作情况如何5.0,但从5.0到6.0没有崩溃,或者请不要使用5到6的Google Map SDK代替这个MKMapView!
P.S。对不起,我的英文不好!