试图在iOS 4.3上运行的iOS版Google地图SDK

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

我的应用程序在iOS 4.3上运行正常, GLKit.frameworkGoogleMaps.framework设置为可选,如果我删除所有对Google API的调用。

对于NSFileProtectionCompleteUntilFirstUserAuthentication的引用可能是由一些其他代码或其他框架引起的吗?

更新:

其实上面是错的。 我忘记了在步骤7中包含-ObjC链接器标志。 没有-ObjC的应用程序能够在iOS 4.3上运行良好。 如果没有iOS 6上的[GMSServices provideAPIKey]标志,则调用[GMSServices provideAPIKey]成功,但对[GMSMapView mapWithFrame:camera:]的调用失败(返回nil),所以这不是一个选项。

使用-ObjC标志,在iOS 4.3上,我得到了与_NSFileProtectionCompleteUntilFirstUserAuthentication相同的错误。

我尝试将-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps更改为-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps ,仅强制加载Google Maps API而不是其他库,但在iOS 4.3上仍然失败。

我认为-force_load-force_load正在覆盖设置,使GoogleMaps.framework可选。

另外,在iOS 5.0上,我收到了有关_NSURLIsExcludedFromBackupKey的类似错误。 不过,我假设它可以在iOS 5.1上运行。 @ tomeron11,你用什么版本的5.xtesting?

更新2:

这感觉就像一个可怕的黑客攻击,但是将以下内容添加到项目中的某个.m文件,可以使其在iOS 5.0上运行:

 NSString* const NSURLIsExcludedFromBackupKey = @"NSURLIsExcludedFromBackupKey"; 

这似乎不会导致在iOS 6.0上的问题,即使该符号将被定义两次,虽然我不知道它是否可以信任。

对于iOS 4.3,我尝试join:

 NSString* const NSFileProtectionCompleteUntilFirstUserAuthentication = @"NSFileProtectionCompleteUntilFirstUserAuthentication"; 

这将停止有关_NSFileProtectionCompleteUntilFirstUserAuthentication的错误,但是我得到以下错误:

 dyld: Symbol not found: _OBJC_CLASS_$_NSMutableOrderedSet 

我不确定是否有方法愚弄链接器在iOS 4.3上看到一个虚拟版本的NSMutableOrderedSet。

更新3:

SDK文档说最低支持的平台是iOS 5.1 。

谷歌已经closures了错误报告WontFix ,所以似乎没有办法让它在5.0或以下的工作。

更新4:

谷歌已经重新开放这个bug作为增强 。

更新5:

SDK的最新版本1.1.0现在不再在iOS 5.0上启动时崩溃。

但是, Google不会修复iOS 4.x的崩溃 。

由于SDK仅正式支持iOS 5.1+,尽pipe在iOS 5.0启动时不再崩溃,但如果您尝试创buildGMSMapView则会崩溃并显示错误消息:

Google Maps SDK for iOS仅支持iOS 5.1+

如果你使用的是在5.0启动时不会崩溃的黑客攻击,即:

 NSString* const NSURLIsExcludedFromBackupKey = @"NSURLIsExcludedFromBackupKey"; 

然后,SDK将在iOS 5.0上运行。 它似乎工作,但它可能不是一个好主意,因为它不是谷歌正式支持。

我的Foundation.framework和UIKit.framework(UIActivityViewController崩溃在1.5 GMSdk太…..)设置模式“选项”(薄弱的combobox中看不到)。 位于此框架组件中的NSMutableOrdererSet和NSURLIsExcludedFromBackupKey。 我不检查如何工作这个解决scheme在iOS 5.0以上,但从5.0到6.0不崩溃,或请不要使用谷歌地图SDK从5到6,而不是这个MKMapView!

PS抱歉,我的英文不好!