我成功地将它sdk
与我的应用程序集成。我的应用程序旨在与4.3 和 5.x一起运行Google Maps sdk for iOS6
,并与 AppleUIMapKit
一起运行。iOS
由于我添加了google maps
框架,ios 4.3 将不再运行。我将GLKit.framework
and更改GoogleMaps.framework
为“可选”,dyld: Symbol not found: _NSFileProtectionCompleteUntilFirstUserAuthentication
甚至在应用程序启动之前就得到了。需要你的帮助 :-)
2 回答
我的应用程序在 iOS 4.3 上运行良好,GLKit.framework
并且GoogleMaps.framework
设置为可选,如果我删除了对 Google API 的所有调用。
引用NSFileProtectionCompleteUntilFirstUserAuthentication
可能是由您的其他代码或其他框架引起的吗?
更新:
其实上面的说法是错误的。我忘记在说明-ObjC
的第 7 步中包含链接器标志。没有该应用程序能够在 iOS 4.3 上正常运行。如果没有iOS 6 上的标志,调用会成功,但调用会静默失败(返回 nil),所以这不是一个选项。-ObjC
-ObjC
[GMSServices provideAPIKey]
[GMSMapView mapWithFrame:camera:]
设置好-ObjC
标志后,在 iOS 4.3 上,我收到关于_NSFileProtectionCompleteUntilFirstUserAuthentication
.
我尝试更改-ObjC
为-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps
, 仅强制加载 Google Maps API 而不是其他库,但它在 iOS 4.3 上仍然失败。
我认为-ObjC
or-force_load
正在覆盖设置以使其成为GoogleMaps.framework
可选。
此外,在 iOS 5.0 上,我收到关于_NSURLIsExcludedFromBackupKey
. 不过,我假设它可以在 iOS 5.1 上运行。@tomeron11,您测试的是哪个版本的 5.x?
更新 2:
这感觉像是一个可怕的 hack,但是将以下内容添加到项目中的一个 .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 文档说支持的最低平台是 iOS 5.1。
Google 已将错误报告作为 WontFix 关闭,因此似乎无法让它在 5.0 或更低版本上运行。
更新 4:
谷歌已经重新打开了这个错误作为一个增强。
更新 5:
SDK 的最新版本 1.1.0 现在不再在 iOS 5.0 上启动时崩溃。
但是,Google 不会修复 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 上运行。它似乎有效,但这可能不是一个好主意,因为它没有得到谷歌的官方支持。
我 Foundation.framework 和 UIKit.framework(UIActivityViewController 在 1.5 GMSdk 中也崩溃了.....)设置为“选项”模式(在组合框中看不到弱点)。NSMutableOrdererSet 和 NSURLIsExcludedFromBackupKey 位于这个框架组件中。我不检查这个解决方案在 ios less 5.0 上是如何工作的,但是从 5.0 到 6.0 没有崩溃,或者请不要使用从 5 到 6 的 Google Map SDK 而不是这个 MKMapView!
PS对不起我的英语不好!