Исключение InflateException для карты Android на некоторых устройствах

#android #dictionary #android-inflate

#Android #словарь #android-inflate

Вопрос:

Итак, у меня есть это приложение в Play Store с несколькими тысячами загрузок, и я думаю, что некоторые из них также являются счастливыми пользователями. Приложение сильно основано на Google Maps V2. Все работает нормально, за исключением того, что я заметил несколько исключений с затронутыми пользователями 4 в общей сложности (за последние дни 30). Похоже, есть какая-то проблема с раздуванием карты Google, но я не могу получить какую-либо информацию из самого журнала.

Вот мой полный журнал 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», остальное — samsung (GT-I9300)

введите описание изображения здесь

Все они работают на Android 4.4.

Ребята, у вас есть какие-нибудь идеи, что могло вызвать аварию? Любые советы приветствуются.

РЕДАКТИРОВАТЬ: после дальнейших исследований я нашел устройство, на котором так много сбоев, вот оно: https://www.ox.ee/en/product/836741

Ответ №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>
 

Комментарии:

1. Почему именно это должно помочь …?

2. У меня тоже была эта проблема. Это должно что-то делать с разницей в оборудовании на разных устройствах

3. Я не уверен на 100%, но стоит попробовать

4. В соответствии с использованием, фрагмент используется только 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>
 

Попробуйте добавить это к вашему действию в манифесте. Если это поможет, изучите аппаратное ускорение в документации Google

Комментарии:

1. Да, я получил android: name =»com.google.android.geo. API_KEY» если это то, что вы спрашиваете. Я думаю, что без этого тега журнал ошибок выглядел бы совершенно иначе.