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

时间:2013-02-22 15:22:18

标签: xamarin.ios google-maps-sdk-ios

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

我已经从开发者控制台启用了SDK并更新了GMSServices.ProvideAPIKey调用以使用我的iOS API密钥,从我读过的内容中,几乎所有这些都是必需的?

我注意到这个bug是根据实际的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

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

更新#2

Google提出了一种解决方法,并且已经实施。我已成功部署到设备:)您可以在MonoTouch-Bindings Repo

上找到可行的解决方案

谷歌将按照here所述的即将发布的版本解决此问题。

快乐编码


更新

Google地图上存在一个错误,无法在Xamarin.iOS中使用它,此漏洞已报告谷歌

http://code.google.com/p/gmaps-api-issues/issues/detail?id=5018

请将其标记为谷歌通知并更快地修复它;)


我已将绑定更新到Google地图1.1.0版,您可以在此处找到它们https://github.com/mono/monotouch-bindings/tree/master/GoogleMaps

请注意我尚未更新示例以反映Api更改。

希望这有帮助

亚历

答案 1 :(得分:0)

自从他们在12月14日做了最后一次更新以来,Xamarin没有更新到更新的版本。我相信这次崩溃与这个问题有关。也许今天你可以生成的API密钥只是为1.1.0和更新版本构建。