从Google Play服务加载MapFragment时出现致命信号11

时间:2014-10-24 16:33:12

标签: android google-maps xamarin google-play-services

我在我的应用程序中使用Google Play Service的地图片段。在一个页面上,这个片段工作得很好。但是,当在另一个页面中使用片段替换其中带有ImageView的另一个片段(通过Picasso加载)时,应用程序和我的手机崩溃了一个模糊的例外:

10-24 16:07:15.097 D/REQUEST ( 7454): Connection opened to:https://clients4.google.com/glm/mmap/api
10-24 16:07:15.097 D/REQUEST ( 7454): Open Connection
10-24 16:07:15.167 W/ResourceType( 7454): CREATING STRING CACHE OF 44 bytes
10-24 16:07:15.187 D/USER_EVENTS( 7454): Event: type=78, status: MD, data: T
10-24 16:07:15.197 D/dalvikvm( 7454): GC_CONCURRENT freed 2154K, 4% free 60989K/63412K, paused 4ms+2ms, total 41ms
10-24 16:07:15.197 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 22ms
10-24 16:07:15.197 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 14ms
10-24 16:07:15.197 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 15ms
10-24 16:07:15.197 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 15ms
10-24 16:07:15.197 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 15ms
10-24 16:07:15.207 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 16ms
10-24 16:07:15.207 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 16ms
10-24 16:07:15.207 D/dalvikvm( 7454): WAIT_FOR_CONCURRENT_GC blocked 16ms
10-24 16:07:15.227 D/USER_EVENTS( 7454): Event: type=113, status: mc, data: 
10-24 16:07:15.247 D/REQUEST ( 7454): Add Data Request: 147
10-24 16:07:15.287 D/USER_EVENTS( 7454): Event: type=58, status: gl, data: |r=8|g=8|b=8|a=0|d=24|s=8|v=Qualcomm|i=OpenGL ES-CM 1.1|c=Adreno (TM) 330|e=t|
10-24 16:07:15.407 E/mono-rt ( 7454): 
10-24 16:07:15.407 E/mono-rt ( 7454): =================================================================
10-24 16:07:15.407 E/mono-rt ( 7454): Got a SIGSEGV while executing native code. This usually indicates
10-24 16:07:15.407 E/mono-rt ( 7454): a fatal error in the mono runtime or one of the native libraries 
10-24 16:07:15.407 E/mono-rt ( 7454): used by your application.
10-24 16:07:15.407 E/mono-rt ( 7454): =================================================================
10-24 16:07:15.407 E/mono-rt ( 7454): 
10-24 16:07:15.407 F/libc    ( 7454): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 8262 (DataRequestDisp)
10-24 16:07:15.457 W/        ( 7454): Thread 0x80484638 may have been prematurely finalized

这恰好在Google地图尝试加载数据时发生。

正如我所提到的,MapFragment替换了另一个包含ImageView的Fragment,其内容通过Picasso加载。如果我删除ImageView,则不会发生崩溃。有任何想法吗?完全难倒。

2 个答案:

答案 0 :(得分:1)

因此,在经过多次头部刮擦之后,我发现了导致问题的原因。

我正在使用这个Xamarin Picasso绑定:https://github.com/jacksierkstra/Picasso 不幸的是,它暂时没有更新,并且包含对旧版Square's ok-Http library的引用。

此版本的Ok-HTTP似乎改变了全局SSL上下文,从而导致Google的MapFragment在通过HTTPS请求数据时中断。我在这里找到了这个问题:https://github.com/square/okhttp/issues/184 值得庆幸的是,这已被修复,所以我创建了my own Xamarin.Picasso Binding,现在所有人都在游泳。

这个答案帮助我开始寻找正确的方向: AbstractGoogleClient: Fatal signal 11 (SIGSEGV)

答案 1 :(得分:1)

一个令人头疼的bug ......我花了一些时间来弄明白,谢谢你的帖子!我试过你的库,但它无法绑定。我找到了一个非常简单的解决方法。在应用程序的开头添加这行代码,它应该可以解决问题!

URL.setURLStreamHandlerFactory(new OkHttpClient());