5

我成功地将它sdk与我的应用程序集成。我的应用程序旨在与4.3 和 5.x一起运行Google Maps sdk for iOS6,并与 AppleUIMapKit一起运行。iOS由于我添加了google maps框架,ios 4.3 将不再运行。我将GLKit.frameworkand更改GoogleMaps.framework为“可选”,dyld: Symbol not found: _NSFileProtectionCompleteUntilFirstUserAuthentication甚至在应用程序启动之前就得到了。需要你的帮助 :-)

4

2 回答 2

3

我的应用程序在 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 上仍然失败。

我认为-ObjCor-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 上运行。它似乎有效,但这可能不是一个好主意,因为它没有得到谷歌的官方支持。

于 2012-12-28T05:12:31.020 回答
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对不起我的英语不好!

于 2013-09-27T10:54:18.460 回答