3

I am trying to test out the new Google SDK for iOS using the GoogleMapsSample on GitHub, however, every time I run the app crashes trying to create an instance of GMSMapView. This is happening when trying to run on both the simulator and the device.

I have enabled the SDK from the developer console and updated the GMSServices.ProvideAPIKey call to use my iOS API key, from what I have read that is pretty much all that's required?

I did notice this bug which was logged against the actual SDK which mentions an issue relating to OpenGL so not sure if that's what the issue is here. However, as I can't get access to a log using the simulator I ran it on the device and checked the log out using XCode and the error does seem to relate to this - stack trace:

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

Version info:

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

Any ideas?

James
  • 80,725
  • 18
  • 167
  • 237
  • Are you able to also get the console log from the XCode organizer? Can you symbolicate the crash report? Your crash seems to be happening in dyld (while loading libraries), whereas that bug report has the crash happening while rendering, so it is possibly a different issue. – Saxon Druce Feb 23 '13 at 00:13
  • @SaxonDruce this error was extracted from the console, this wasn't take from the device logs (as I am not getting one). The error does stem longer than what I have posted but I thought this was the most important part. I will run it again and add the full error. Also, not sure how I could get this symbolicated given its taken from the console? I get the feeling the DLL loading is a red herring because its only when I create an instance of GMSMapView it fails, I can create the camera etc and the app runs. – James Feb 23 '13 at 10:22
  • @SaxonDruce I have updated the stack trace to show the full log (excluding the binary images part - not sure that's relevant). I have also manually symbolicated any lines which were called from the sample app using the approach outlined [in this question](http://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports). – James Feb 23 '13 at 11:45
  • Just wondering if you're using version 1.0.1 or 1.1.0 of the Google SDK? – Saxon Druce Feb 23 '13 at 11:50
  • @SaxonDruce not sure, I am running the sample linked to from [this Xamarin blog article](http://blog.xamarin.com/google-maps-sdk-for-ios-now-on-monotouch/) - specifically the *"download the bindings library"*. – James Feb 23 '13 at 11:55
  • @SaxonDruce looking at the github repository, it does appear to be 1.0.1. I will try running the latest version and see if the error persists. – James Feb 23 '13 at 12:03
  • Yeah I think it would be 1.0.1, since that was the only version available on the 14th of December when that blog post was made. The reason I asked is that I think the mono bindings wouldn't be compatible with 1.1.0, if that was what you were using (since the API changed a bit between 1.0.1 and 1.0.2, and again for 1.1.0). – Saxon Druce Feb 23 '13 at 12:08
  • I'm downloading the bindings as we speak so I will rebuild using the latest version. I will let you know if it works. – James Feb 23 '13 at 12:11
  • You'll probably need to make a few changes to the binding. At a minimum, GMSCamera (a C struct) was removed and replaced with GMSCameraPosition (an Objective-C class). – Saxon Druce Feb 23 '13 at 12:14
  • What's curious about your crash report is that it's crashing in thread 2 (which is the background thread which downloads tiles from the server). I'm not sure why it would crash there - or why the main thread would be somewhere in dyld when the background thread is trying to fetch tiles. – Saxon Druce Feb 23 '13 at 12:16
  • @SaxonDruce tried updating the existing bindings to use `GMSCameraPosition` instead of `GMSCamera` still crashing though. Getting a more readable stack trace now relating to `GMSMapView.FromCamera` which takes in a `RectangleF` and `GMSCameraPosition`. I have never updating bindings before but I followed the [documentation](http://docs.xamarin.com/guides/ios/advanced_topics/binding_objective-c_libraries) so not sure if I have done something wrong! – James Feb 23 '13 at 20:13
  • @James: you should try to get a fully symbolicated crash report from Xcode's Organizer (just plug in the device in your Mac, open Xcode, Window -> Organizer, pick your device on the left and then the Device Log node - note that Xcode will symbolicate in the background while you're viewing the crash report, it may take a few seconds to complete). – Rolf Bjarne Kvinge Feb 26 '13 at 23:02
  • @RolfBjarneKvinge that's what I usually check however this particular app wasn't creating one. Not sure if the app has to start before it creates one? I will check again and update my post if there is one there. Is there nothing from the log I posted of use? – James Feb 26 '13 at 23:21
  • Updated bindings :) see below – dalexsoto Feb 27 '13 at 07:05
  • @James: The log says: ": Not saving crash log because we have reached the limit for logs to store on disk. Sync or otherwise clear logs from /var/mobile/Library/Logs/CrashReporter to save new logs." - you can fix this by syncing your device with iTunes. – Rolf Bjarne Kvinge Feb 27 '13 at 11:07
  • @RolfBjarneKvinge *completely* missed that, thanks! I am not at my machine but I will clear the logs when I get home and re-post the device log. dalexsoto has kindly updated the bindings for the latest version so I would most likely want to use them, however, it still might be worth finding out why this issue is happening. – James Feb 27 '13 at 11:42
  • @RolfBjarneKvinge see updated stack trace. – James Feb 27 '13 at 18:32
  • @James: An unhandled Objective-C exception is ending up terminating the process. Can you try adding "-v -v -v" (without the quotes) to the additional mtouch arguments in the project's iOS Build options page and then try again. You'll still crash, but another line should be printed to the device log with information about the Objective-C exception being thrown ("MonoTouch: Received unhandled ObjectiveC exception: ..."). – Rolf Bjarne Kvinge Feb 27 '13 at 21:27
  • @RolfBjarneKvinge I actually deleted the old bindings but I will try to find an old copy of the dll and try again. In the mean time, I have downloaded the new bindings and it's working fine in the simulator but when I go to deploy to the device I get - `Undefined symbols for architecture armv7: "_WebPInitPremultiplyNEON", referenced from: _GMSx_WebPInitPremultiply in GoogleMaps(libWebP.o) "_WebPInitUpsamplersNEON", referenced from: _GMSx_WebPInitUpsamplers in GoogleMaps(libWebP.o) ld: symbol(s) not found for architecture armv7 collect2: ld returned 1 exit status` - any ideas? – James Feb 27 '13 at 21:31
  • @RolfBjarneKvinge got this - `MonoTouch: Received unhandled ObjectiveC exception: NSInternalInconsistencyException +entityForName: could not locate an NSManagedObjectModel for entity name 'GMSCachedTile'`. – James Feb 27 '13 at 21:40
  • @James: The problem with the latest bindings is Google's fault. I've filed a bug with them: http://code.google.com/p/gmaps-api-issues/issues/detail?id=5018 (please star it to make them fix it faster :) – Rolf Bjarne Kvinge Feb 27 '13 at 22:31
  • @James: if you google the "could not locate an NSManagedObjectModel for entity name 'GMSCachedTile'" message you'll find several ideas you can try out - it might be an issue with missing resources from their bundle. – Rolf Bjarne Kvinge Feb 27 '13 at 22:35
  • @RolfBjarneKvinge thought that, when I googled the actual error with regards to `Undefined symbols for architecture armv7` it did seem to suggest there was a missing lib somewhere. I have starred the issue hopefully they get it fixed ASAP as I would like to have the new map view in my app in time for an April release. – James Feb 27 '13 at 23:01

2 Answers2

4

Update #2

Google suggested a workaround and it has been implemented. I have successfully deployed to device :) you can find the working solution on MonoTouch-Bindings Repo

Google will fix this on their upcoming release as stated here.

Happy Coding


Update

There is a bug on Google Maps that makes it impossible to use it in Xamarin.iOS, this bug has been reported to google here

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

Please Star it so google notices and fixes it faster ;)


I have updated the bindings to version 1.1.0 of Google Maps you can find them here https://github.com/mono/monotouch-bindings/tree/master/GoogleMaps

Please note I have not updated the sample to reflect the Api changes yet.

Hope this helps

Alex

Community
  • 1
  • 1
dalexsoto
  • 3,412
  • 1
  • 27
  • 43
  • +1 brilliant! I will get this downloaded & tested as soon as I get a chance. – James Feb 27 '13 at 09:41
  • Just tried to deploy this to a device and got the following error: `Undefined symbols for architecture armv7: "_WebPInitPremultiplyNEON", referenced from: _GMSx_WebPInitPremultiply in GoogleMaps(libWebP.o) "_WebPInitUpsamplersNEON", referenced from: _GMSx_WebPInitUpsamplers in GoogleMaps(libWebP.o) ld: symbol(s) not found for architecture armv7 collect2: ld returned 1 exit status error MT5202: Native linking failed. Please review the build log.` - any ideas? – James Feb 27 '13 at 21:24
  • yeah was logged by Rolf (see comments on question). Oh and already got it starred and spreading the word! Thanks. – James Feb 28 '13 at 23:20
0

Xamarin did not update to the newer version since they did the last update on 14 december. I believe that this crash relates to this issue. Maybe the API keys you can generate today are just build for 1.1.0 and newer.

Bohrnsen
  • 79
  • 6
  • I would be shocked if it was the API key causing this type of exception (although I am not ruling it out). v1.0.2 is still available for download so it wouldn't make sense for the API key to only support v1.1.0 upwards. – James Feb 25 '13 at 13:17