【问题标题】:InflateException for Android Map on some devices某些设备上 Android 地图的 InflateException
【发布时间】:2016-10-14 08:12:21
【问题描述】:

所以我在 Play 商店中有这个应用程序,下载量很少,我猜他们中的一些人也是快乐的用户。应用程序强烈基于 Google Maps V2。一切正常,除了我注意到总共有 4 名用户(过去 30 天)有少数例外情况。膨胀谷歌地图似乎存在某种问题,但我无法从日志本身获取任何信息。

这是我针对这些用户的 crashlytics 完整日志:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*packageid*/com.*packageid*.views.map.MapActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class fragment
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2187)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
       at android.app.ActivityThread.access$800(ActivityThread.java:138)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5102)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by android.view.InflateException: Binary XML file line #16: Error inflating class fragment
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
       at com.parkanizer.parkingapp.views.map.MapActivity.onCreate(MapActivity.java:106)
       at android.app.Activity.performCreate(Activity.java:5231)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
       at android.app.ActivityThread.access$800(ActivityThread.java:138)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5102)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
       at dalvik.system.NativeStart.main(NativeStart.java)
Caused by java.lang.NullPointerException
       at maps.G.a.a(Unknown Source)
       at maps.V.N.a(Unknown Source)
       at maps.D.e.a(Unknown Source)
       at maps.D.p.a(Unknown Source)
       at maps.ad.ae.a(Unknown Source)
       at maps.ad.t.a(Unknown Source)
       at maps.ad.M.a(Unknown Source:2000)
       at uy.onTransact(:com.google.android.gms.DynamiteModulesB:107)
       at android.os.Binder.transact(Binder.java:361)
       at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
       at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
       at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
       at com.google.android.gms.dynamic.zza.zza(Unknown Source)
       at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
       at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
       at com.parkanizer.parkingapp.views.MySupportMapFragment.onCreateView(MySupportMapFragment.java:18)
       at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
       at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1332)
       at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2288)
       at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
       at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
       at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
       at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)
       at com.parkanizer.parkingapp.views.map.MapActivity.onCreate(MapActivity.java:106)
       at android.app.Activity.performCreate(Activity.java:5231)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
       at android.app.ActivityThread.access$800(ActivityThread.java:138)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5102)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)

这是我的视图 XML 文件。真的没有什么特别的事情发生,而且在大多数情况下,用户都不会崩溃。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <RelativeLayout
        android:id="@+id/content_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/map"
            tools:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            map:cameraTargetLat="50.2633971"
            map:cameraTargetLng="19.0111041"
            map:cameraZoom="10"
            class="com.google.android.gms.maps.SupportMapFragment" />

<... Some other typical UI elements ...>

我无法解决我的问题,也无法重现它。你有什么想法吗?

在 Fabric 中,共有 33 次崩溃,受影响的 4 位用户。 88% 的崩溃是因为奇怪的设备“Lechpol”,其余的是三星 (GT-I9300)

它们都在 Android 4.4 上运行。

你们知道导致崩溃的原因吗?任何建议表示赞赏。

编辑:经过进一步研究,我发现有这么多崩溃的设备,就是这样: https://www.ox.ee/en/product/836741

【问题讨论】:

    标签: android dictionary android-inflate


    【解决方案1】:

    为相对布局设置可见性消失/可见

    <RelativeLayout
        android:id="@+id/content_map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:visibility="gone"  >
    <fragment 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/map"
            tools:context=".MapsActivity"
            android:name="com.google.android.gms.maps.SupportMapFragment" />
    
     </RelativeLayout>
    

    【讨论】:

    • 为什么它应该帮助...?
    • 我也遇到过这个问题,跟不同设备的硬件差异有关
    • 我不是 100% sur,但它的 qorth 尝试
    • 根据使用情况,fragment只有setRetainInstance和getMap使用。我不是 100% 了解它们是如何工作的,但据我所知,那里没有任何东西可以控制视图的可见性。
    【解决方案2】:
    <activity android:name="com.bison.activities.YourActivity"
                android:hardwareAccelerated="true"
                >
                <intent-filter>
                    <action
                        android:name="android.intent.action.VIEW" />
                </intent-filter>
            </activity>
    

    尝试将此添加到清单中的活动。如果它有助于研究谷歌文档中的硬件加速

    【讨论】:

    • 是的,我得到了 android:name="com.google.android.geo.API_KEY" 如果这是你要的。我认为如果没有这个标签,错误日志看起来会完全不同。
    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多