Xamarin.ios Google Maps SDK for iOS在启动时使用Monotouch绑定崩溃

Xamarin.ios Google Maps SDK for iOS在启动时使用Monotouch绑定崩溃,xamarin.ios,google-maps-sdk-ios,Xamarin.ios,Google Maps Sdk Ios,我正在尝试使用GitHub上的测试新的Google SDK for iOS,但是,每次我运行应用程序时,试图创建GMSMapView的实例时都会崩溃。当试图在模拟器和设备上运行时,会发生这种情况 我已经从开发者控制台启用了SDK,并更新了GMSServices.ProvideAppKey调用以使用我的iOS API密钥,从我所读到的内容来看,这几乎就是所需的全部了 我确实注意到这是根据实际的SDK记录的,它提到了一个与OpenGL相关的问题,所以不确定这是否是问题所在。但是,由于我无法使用模拟器

我正在尝试使用GitHub上的测试新的Google SDK for iOS,但是,每次我运行应用程序时,试图创建
GMSMapView
的实例时都会崩溃。当试图在模拟器和设备上运行时,会发生这种情况

我已经从开发者控制台启用了SDK,并更新了
GMSServices.ProvideAppKey
调用以使用我的iOS API密钥,从我所读到的内容来看,这几乎就是所需的全部了

我确实注意到这是根据实际的SDK记录的,它提到了一个与OpenGL相关的问题,所以不确定这是否是问题所在。但是,由于我无法使用模拟器访问日志,我在设备上运行了它,并使用XCode检查了日志,错误似乎与此有关-堆栈跟踪:

Incident Identifier: {Incident Id}
CrashReporter Key:   {CrashReporter key}
Hardware Model:      iPhone5,2
Process:         GoogleMapsSample [6085]
Path:            /var/mobile/Applications/{AppId}/GoogleMapsSample.app/GoogleMapsSample
Identifier:      GoogleMapsSample
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       2013-02-27 18:28:21.300 +0000
OS Version:      iOS 6.0.2 (10A551)
Report Version:  104

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000180
Crashed Thread:  6

Last Exception Backtrace:
0   CoreFoundation                  0x372913e2 __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x33cc995e objc_exception_throw + 26
2   CoreData                        0x32330828 +[NSEntityDescription entityForName:inManagedObjectContext:] + 100
3   GoogleMapsSample                0x0010a3c6 -[GMSTileDataCache fetchTilesImmediateWithPredicate:sortDescriptor:completionHandler:] (GMSTileDataCache.mm:794)
4   GoogleMapsSample                0x00106af0 __47-[GMSTileDataCache startWithCompletionHandler:]_block_invoke_0 (GMSTileDataCache.mm:170)
5   libdispatch.dylib               0x3096478e _dispatch_call_block_and_release + 6
6   libdispatch.dylib               0x30967b36 _dispatch_queue_drain + 138
7   libdispatch.dylib               0x30965678 _dispatch_queue_invoke + 40
8   libdispatch.dylib               0x3096860e _dispatch_root_queue_drain + 206
9   libdispatch.dylib               0x309687d4 _dispatch_worker_thread2 + 88
10  libsystem_c.dylib               0x3337f7ec _pthread_wqthread + 356
11  libsystem_c.dylib               0x3337f680 start_wqthread + 4


Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   dyld                            0x2fe9bcf6 ImageLoaderMachOCompressed::trieWalk(unsigned char const*, unsigned char const*, char const*) + 42
1   dyld                            0x2fe9be88 ImageLoaderMachOCompressed::findExportedSymbol(char const*, ImageLoader const**) const + 72
2   dyld                            0x2fe96ca4 ImageLoaderMachO::findExportedSymbol(char const*, bool, ImageLoader const**) const + 28
3   dyld                            0x2fe93592 ImageLoader::findExportedSymbolInDependentImagesExcept(char const*, ImageLoader const**, ImageLoader const**&, ImageLoader const**, ImageLoader const**) const + 50
4   dyld                            0x2fe936f0 ImageLoader::findExportedSymbolInImageOrDependentImages(char const*, ImageLoader::LinkContext const&, ImageLoader const**) const + 64
5   dyld                            0x2fe91d12 dlsym + 474
6   libdyld.dylib                   0x37ad79c6 dlsym + 54
7   libGFXShared.dylib              0x3362e5c4 gfxInitializeLibrary + 1256
8   GLEngine                        0x379bce6a gliInitializeLibrary + 42
9   OpenGLES                        0x36a9fa4e eagl_init + 418
10  OpenGLES                        0x36a9f6a4 -[EAGLSharegroup initWithAPI:sharedWithCompute:] + 116
11  OpenGLES                        0x36a9e45e -[EAGLContext initWithAPI:properties:] + 186
12  OpenGLES                        0x36a9e2f2 -[EAGLContext initWithAPI:sharedWithCompute:] + 138
13  GoogleMapsSample                0x00081ada -[GMSIOSGLContext initWithAPI:] (GMSIOSGLContext.mm:14)
14  GoogleMapsSample                0x001275b6 gmscore::renderer::GMSIOSGLContextPool::GMSIOSGLContextPool() (GLContextPool.mm:108)
15  GoogleMapsSample                0x0012733a __GetGLContextPool_block_invoke_0 (GLContextPool.mm:204)
16  libdispatch.dylib               0x309645d8 _dispatch_client_callout + 20
17  libdispatch.dylib               0x30965586 dispatch_once_f + 42
18  GoogleMapsSample                0x001272da gmscore::renderer::GLContextPool::GetGLContextPool() (once.h:68)
19  GoogleMapsSample                0x00142b60 -[GMSEntityRendererView initWithFrame:context:] (GMSEntityRendererView.mm:53)
20  GoogleMapsSample                0x001562be -[GMSGestureHandlerView initWithFrame:context:gestures:] (GMSGestureHandlerView.mm:282)
21  GoogleMapsSample                0x000fc6d6 -[GMSVectorMapView initWithFrame:connection:tileServiceRegistry:tileRequestCoordinator:serverControlledParameters:resourceManager:resources:networkMonitor:context:flags:locationPipeline:] (GMSVectorMapView.mm:245)
22  GoogleMapsSample                0x00097bc6 -[GMSVectorMapViewBridge sharedInit:] (GMSVectorMapViewBridge.mm:108)
23  GoogleMapsSample                0x000977f0 -[GMSVectorMapViewBridge initWithFrame:camera:] (GMSVectorMapViewBridge.mm:84)
24  GoogleMapsSample                0x00080caa +[GMSMapView mapWithFrame:camera:] (GMSMapView.m:36)
25  GoogleMapsSample                0x00183058 wrapper_managed_to_native_ApiDefinition_Messaging_IntPtr_objc_msgSend_RectangleF_GMSCamera_intptr_intptr_System_Drawing_RectangleF_GoogleMaps_GMSCamera + 456
26  GoogleMapsSample                0x004ff57c GoogleMapsSample_MapViewController_LoadView (MapViewController.cs:21)
27  GoogleMapsSample                0x00edae94 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 196
28  GoogleMapsSample                0x018ebd84 mono_jit_runtime_invoke (mini.c:5783)
29  GoogleMapsSample                0x0195b644 mono_runtime_invoke (object.c:2790)
30  GoogleMapsSample                0x018d9816 native_to_managed_trampoline_GoogleMapsSample_MapViewController_LoadView (registrar.m:10129)
31  UIKit                           0x3805d41c -[UIViewController loadViewIfRequired] + 64
32  UIKit                           0x3809dd2c -[UIWindow addRootViewControllerViewIfPossible] + 60
33  UIKit                           0x38099ac8 -[UIWindow _setHidden:forced:] + 360
34  UIKit                           0x380db19c -[UIWindow makeKeyAndVisible] + 56
35  GoogleMapsSample                0x01549600 wrapper_managed_to_native_MonoTouch_ObjCRuntime_Messaging_void_objc_msgSend_intptr_intptr + 64
36  GoogleMapsSample                0x004ff22c GoogleMapsSample_AppDelegate_FinishedLaunching_MonoTouch_UIKit_UIApplication_MonoTouch_Foundation_NSDictionary (AppDelegate.cs:35)
37  GoogleMapsSample                0x00edae94 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 196
38  GoogleMapsSample                0x018ebd84 mono_jit_runtime_invoke (mini.c:5783)
39  GoogleMapsSample                0x0195b644 mono_runtime_invoke (object.c:2790)
40  GoogleMapsSample                0x018c9608 native_to_managed_trampoline_GoogleMapsSample_AppDelegate_FinishedLaunching (registrar.m:5515)
41  UIKit                           0x3809ea74 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 248
42  UIKit                           0x3809e5f8 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1164
43  UIKit                           0x38096806 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
44  UIKit                           0x3803ecea -[UIApplication handleEvent:withNewEvent:] + 1006
45  UIKit                           0x3803e778 -[UIApplication sendEvent:] + 68
46  UIKit                           0x3803e1ba _UIApplicationHandleEvent + 6194
47  GraphicsServices                0x315235f4 _PurpleEventCallback + 588
48  GraphicsServices                0x31523222 PurpleEventCallback + 30
49  CoreFoundation                  0x372663e4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
50  CoreFoundation                  0x37266386 __CFRunLoopDoSource1 + 134
51  CoreFoundation                  0x3726520a __CFRunLoopRun + 1378
52  CoreFoundation                  0x371d8238 CFRunLoopRunSpecific + 352
53  CoreFoundation                  0x371d80c4 CFRunLoopRunInMode + 100
54  UIKit                           0x38095440 -[UIApplication _run] + 664
55  UIKit                           0x3809228c UIApplicationMain + 1116
56  GoogleMapsSample                0x01576fa8 wrapper_managed_to_native_MonoTouch_UIKit_UIApplication_UIApplicationMain_int_string___intptr_intptr + 236
57  GoogleMapsSample                0x004fef5c GoogleMapsSample_Application_Main_string__ (Main.cs:17)
58  GoogleMapsSample                0x00edae94 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr + 196
59  GoogleMapsSample                0x018ebd84 mono_jit_runtime_invoke (mini.c:5783)
60  GoogleMapsSample                0x0195b644 mono_runtime_invoke (object.c:2790)
61  GoogleMapsSample                0x0195e3aa mono_runtime_exec_main (object.c:3972)
62  GoogleMapsSample                0x01961cce mono_runtime_run_main (object.c:3602)
63  GoogleMapsSample                0x01905be6 mono_jit_exec (driver.c:1125)
64  GoogleMapsSample                0x019ae5f4 main (main.m:445)
65  GoogleMapsSample                0x0016d20c start + 36

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib          0x378c25d0 kevent64 + 24
1   libdispatch.dylib               0x30969d22 _dispatch_mgr_invoke + 806
2   libdispatch.dylib               0x30965374 _dispatch_mgr_thread + 32

Thread 2:
0   libsystem_kernel.dylib          0x378d2d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3337fad6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3337f7f2 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3337f680 start_wqthread + 4

Thread 3:
0   libsystem_kernel.dylib          0x378c1e80 semaphore_wait_trap + 8
1   GoogleMapsSample                0x01900992 mono_sem_wait (mono-semaphore.c:115)
2   GoogleMapsSample                0x019a0cea finalizer_thread (gc.c:1078)
3   GoogleMapsSample                0x0198bff6 start_wrapper (threads.c:784)
4   GoogleMapsSample                0x018f3942 thread_start_routine (wthreads.c:287)
5   GoogleMapsSample                0x019392dc GC_start_routine (pthread_support.c:1468)
6   libsystem_c.dylib               0x3338a0de _pthread_start + 306
7   libsystem_c.dylib               0x33389fa4 thread_start + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x378c1e30 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x378c1fd0 mach_msg + 48
2   CoreFoundation                  0x372662b6 __CFRunLoopServiceMachPort + 126
3   CoreFoundation                  0x3726502c __CFRunLoopRun + 900
4   CoreFoundation                  0x371d8238 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x371d80c4 CFRunLoopRunInMode + 100
6   WebCore                         0x38ef9a58 _ZL12RunWebThreadPv + 440
7   libsystem_c.dylib               0x3338a0de _pthread_start + 306
8   libsystem_c.dylib               0x33389fa4 thread_start + 4

Thread 5:
0   libsystem_kernel.dylib          0x378d2d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3337fad6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3337f7f2 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3337f680 start_wqthread + 4

Thread 6 name:  Dispatch queue: com.google.maps.TileDataCacheQueue
Thread 6 Crashed:
0   libsystem_kernel.dylib          0x378d2350 __pthread_kill + 8
1   libsystem_c.dylib               0x333a7fb2 pthread_kill + 54
2   libsystem_c.dylib               0x333e4366 abort + 90
3   GoogleMapsSample                0x019330a4 mono_handle_native_sigsegv (mini-exceptions.c:2325)
4   GoogleMapsSample                0x018ea55e mono_sigsegv_signal_handler (mini.c:5878)
5   libsystem_c.dylib               0x333b1d38 _sigtramp + 40
6   GoogleMapsSample                0x01994b34 mono_domain_get (domain.c:1818)
7   GoogleMapsSample                0x0195b644 mono_runtime_invoke (object.c:2790)
8   GoogleMapsSample                0x019c0058 monotouch_throw_monotouch_exception (monotouch-glue.m:1420)
9   GoogleMapsSample                0x019c00e8 monotouch_exception_handler (monotouch-glue.m:1426)
10  CoreFoundation                  0x372916cc __handleUncaughtException + 624
11  libobjc.A.dylib                 0x33cc9a46 _ZL15_objc_terminatev + 126
12  libc++abi.dylib                 0x361ee118 _ZL19safe_handler_callerPFvvE + 76
13  libc++abi.dylib                 0x361ee1b0 std::terminate() + 16
14  libc++abi.dylib                 0x361ef59a __cxa_throw + 118
15  libobjc.A.dylib                 0x33cc999e objc_exception_throw + 90
16  CoreData                        0x32330828 +[NSEntityDescription entityForName:inManagedObjectContext:] + 100
17  GoogleMapsSample                0x0010a3c6 -[GMSTileDataCache fetchTilesImmediateWithPredicate:sortDescriptor:completionHandler:] (GMSTileDataCache.mm:794)
18  GoogleMapsSample                0x00106af0 __47-[GMSTileDataCache startWithCompletionHandler:]_block_invoke_0 (GMSTileDataCache.mm:170)
19  libdispatch.dylib               0x30964790 _dispatch_call_block_and_release + 8
20  libdispatch.dylib               0x30967b36 _dispatch_queue_drain + 138
21  libdispatch.dylib               0x30965678 _dispatch_queue_invoke + 40
22  libdispatch.dylib               0x30968610 _dispatch_root_queue_drain + 208
23  libdispatch.dylib               0x309687d4 _dispatch_worker_thread2 + 88
24  libsystem_c.dylib               0x3337f7ee _pthread_wqthread + 358
25  libsystem_c.dylib               0x3337f680 start_wqthread + 4

Thread 6 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3a484524
    r4: 0x00000006    r5: 0x0aa4c000      r6: 0x01a14b1e      r7: 0x0aa4af9c
    r8: 0x00000000    r9: 0x3a480898     r10: 0x01a14b44     r11: 0x05a9385c
    ip: 0x00000148    sp: 0x0aa4af90      lr: 0x333a7fb7      pc: 0x378d2350
  cpsr: 0x00000010
版本信息:

Mono 2.10.11 (mono-2-10/2baeee2)
GTK 2.24.14
GTK# (2.12.0.0)
Package version: 210110000
Xcode 4.5.1 (1842)
Build 4G1004
Monotouch: 6.2.0.65

有什么想法吗?

Xamarin没有更新到新版本,因为他们上次更新是在12月14日。我相信这次事故与这个问题有关。也许您今天可以生成的API密钥只是为1.1.0及更新版本构建的。

Update#2 谷歌提出了一个解决方案,并已付诸实施。我已成功部署到设备:)您可以在上找到工作解决方案

谷歌将在他们即将发布的版本中修复这个问题

快乐编码


更新 谷歌地图上有一个bug,使得它无法在Xamarin.iOS中使用,这个bug已经在这里报告给谷歌了

请启动它,以便谷歌能够更快地发现并修复它;)


我已经更新了谷歌地图1.1.0版的绑定,你可以在这里找到它们

请注意,我尚未更新样本以反映Api的变化

希望这有帮助


Alex

您还可以从XCode管理器获取控制台日志吗?你能描述一下坠机报告吗?您的崩溃似乎发生在dyld中(加载库时),而该错误报告在呈现时发生了崩溃,因此这可能是另一个问题。@SaxonDruce此错误是从控制台提取的,而不是从设备日志中获取的(因为我没有得到)。这个错误确实比我发布的要长,但我认为这是最重要的部分。我将再次运行它并添加完整错误。另外,我不知道如何将这个符号化,因为它是从控制台获取的?我觉得DLL加载是一种危险的做法,因为只有当我创建GMSMapView实例失败时,我才能创建摄像头等,应用程序才能运行。@SaxonDruce我已更新堆栈跟踪以显示完整日志(不包括二进制图像部分-不确定这是否相关)。我还使用概述的方法手动标记了从示例应用程序调用的所有行。只是想知道您使用的是Google SDK的1.0.1版还是1.1.0版?@SaxonDruce不确定,我正在运行链接到的示例-特别是“下载绑定库”。如果是API密钥导致了这种类型的异常,我会感到震惊(尽管我不排除这种可能性)。v1.0.2仍然可以下载,所以API密钥只支持v1.1.0以上版本是没有意义的!我会在有机会的时候下载并测试它。我只是尝试将它部署到一个设备上,并得到以下错误:
架构armv7的未定义符号:“\u WebPInitPremultiplyNEON”,引用自:\u GMSx\u WebPInitPremultiply in GoogleMaps(libWebP.o)“\u WebPInitUpsamplersNEON”,引用自:_GMSx_WebPInitUpsamplers in GoogleMaps(libWebP.o)ld:未找到架构armv7 collect2的符号:ld返回1个退出状态错误MT5202:本机链接失败。请查看构建日志。
-有什么想法吗?是的,由Rolf记录(请参阅对问题的评论)。哦,而且已经有了它的明星和传播的话!谢谢