Таким образом, около 1% моих ежедневных пользователей часто посещают с исключением NavigationView, которое вызвано тем, что ресурс изображения не был найден. Я нахожу это странным, 99% других пользователей просто в порядке. Я надеялся, что обновление моих зависимостей в итерациях версий решит саму проблему, но, к сожалению, эта ошибка осталась в моих журналах Crashlytics уже 6 итераций, и это худший сбой, который влияет на моих пользователей.
Очевидным было бы то, что оно специфично для более старых устройств, но это было бы неверным предположением. Это не зависит от устройства, не зависит от версии. Хотя на некоторые особенности можно указать
- Версия Android
- 90% Андорид 8
- 10% Android 7
- Устройство
Две соответствующие зависимости, которые я использую:
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.0.0'
Соответствующий фрагмент кода в макете XML:
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:theme="@style/ThemeOverlay.AppCompat.Light"
app:headerLayout="@layout/layout_drawer_header2"
app:menu="@menu/navigation" />
Расположение заголовка:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/authWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
tools:layout_width="240dp">
<TextView
android:id="@+id/number"
style="@style/Base.TextAppearance.AppCompat.Display3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:fontFamily="sans-serif-medium"
android:textColor="?android:textColorPrimary"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="@+id/car"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/driver"
tools:text="#01" />
<ImageView
android:id="@+id/driverIcon"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
app:layout_constraintBottom_toBottomOf="@+id/driver"
app:layout_constraintStart_toEndOf="@+id/number"
app:layout_constraintTop_toTopOf="@+id/driver"
app:srcCompat="@drawable/ic_person_white_24dp" />
<TextView
android:id="@+id/driver"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:layout_marginTop="16dp"
android:drawablePadding="8dp"
android:ellipsize="end"
android:lines="1"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/driverIcon"
app:layout_constraintTop_toTopOf="parent"
tools:text="Drivers name" />
<ImageView
android:id="@+id/coDriverIcon"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
app:layout_constraintBottom_toBottomOf="@+id/codriver"
app:layout_constraintStart_toEndOf="@+id/number"
app:layout_constraintTop_toTopOf="@+id/codriver"
app:srcCompat="@drawable/ic_person_white_24dp" />
<TextView
android:id="@+id/codriver"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:drawablePadding="8dp"
android:ellipsize="end"
android:lines="1"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/coDriverIcon"
app:layout_constraintTop_toBottomOf="@+id/driver"
tools:text="Co-Driver name" />
<ImageView
android:id="@+id/carIcon"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
app:layout_constraintBottom_toBottomOf="@+id/car"
app:layout_constraintStart_toEndOf="@+id/number"
app:layout_constraintTop_toTopOf="@+id/car"
app:srcCompat="@drawable/ic_car_white_24dp" />
<TextView
android:id="@+id/car"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:layout_marginStart="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"
android:ellipsize="end"
android:lines="1"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/carIcon"
app:layout_constraintTop_toBottomOf="@+id/codriver"
tools:text="Racing Car" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<ImageView
android:id="@+id/image"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
app:srcCompat="@drawable/ic_account_circle_white_24dp" />
<ImageView
android:id="@+id/logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:padding="12dp"
android:tint="@android:color/white"
app:srcCompat="@drawable/ic_log_out" />
</RelativeLayout>
<TextView
android:id="@+id/switchText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="16dp"
android:layout_marginRight="8dp"
android:autoLink="web"
android:gravity="center_vertical"
android:maxLines="2"
android:text="@string/track_me_on_racelivemaps_com"
app:layout_constraintEnd_toStartOf="@+id/trackingOn"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/number" />
<Switch
android:layout_width="wrap_content"
android:id="@+id/trackingOn"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_height="wrap_content"
android:padding="8dp"
android:autoLink="web"
android:gravity="center_vertical"
android:maxLines="2"
app:layout_constraintBottom_toBottomOf="@+id/switchText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/switchText" />
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:text="@string/active_stage"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/switchText" />
<Spinner
android:id="@+id/activeStage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView12" />
</androidx.constraintlayout.widget.ConstraintLayout>
Меню:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/mode">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/recce"
android:icon="@drawable/ic_write_black_24dp"
android:title="@string/reccemode" />
<item
android:id="@+id/liaison"
android:icon="@drawable/ic_route_black_24dp"
android:title="@string/liaisonmode" />
<item
android:id="@+id/racing"
android:icon="@drawable/ic_racing_flag_black_24dp"
android:title="@string/racemode" />
<item
android:id="@+id/tsd"
android:icon="@drawable/ic_timer_black_24dp"
android:title="@string/tsd" />
<item
android:id="@+id/tsd_advanced"
android:icon="@drawable/ic_tsd_advanced"
android:title="@string/tsd_advanced" />
<item
android:id="@+id/custom_1"
android:icon="@drawable/ic_navigation_layout"
android:title="@string/custom_layout_1" />
<item
android:id="@+id/custom_2"
android:icon="@drawable/ic_navigation_layout"
android:title="@string/custom_layout_2" />
<item
android:id="@+id/custom_3"
android:icon="@drawable/ic_navigation_layout"
android:title="@string/custom_layout_3" />
</group>
</menu>
</item>
<group android:checkableBehavior="none">
<item
android:id="@+id/stages"
android:icon="@drawable/ic_stage_black_24dp"
android:title="@string/special_stages" />
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/settings" />
<item
android:id="@+id/customize_ui"
android:icon="@drawable/ic_layout_edit"
android:title="@string/customize_ui" />
<item
android:id="@+id/weather"
android:icon="@drawable/ic_weather"
android:title="@string/weather" />
<item
android:id="@+id/login"
android:icon="@drawable/ic_key_white_24dp"
android:title="@string/log_in" />
<item
android:id="@+id/manual"
android:icon="@drawable/ic_manual"
android:title="@string/user_manual" />
<item
android:id="@+id/language"
android:icon="@drawable/ic_translate"
android:title="@string/language" />
<item
android:id="@+id/invite"
android:icon="@drawable/ic_share_black_24dp"
android:title="@string/invite" />
<item
android:id="@+id/feedback"
android:icon="@drawable/ic_feedback_black_24dp"
android:title="@string/feedback_report_bug" />
<item
android:id="@+id/tester"
android:icon="@drawable/ic_tester"
android:title="@string/become_a_tester" />
<item
android:id="@+id/policy"
android:icon="@drawable/ic_policy"
android:title="@string/privacy_policy" />
<item
android:id="@+id/logoff"
android:icon="@drawable/ic_key_white_24dp"
android:title="@string/log_off" />
<item
android:id="@+id/exit"
android:icon="@drawable/ic_exit_to_app_black_24dp"
android:title="@string/exit" />
</group>
</menu>
И, наконец, журналы аварий.
android.view.InflateException: строка двоичного XML-файла # 48: двоичный XML
Строка файла № 48: Ошибка надувания класса
com.google.android.material.navigation.NavigationView
на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3173)
на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3284)
на android.app.ActivityThread.-wrap12 (неизвестный источник)
в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1894)
на android.os.Handler.dispatchMessage (Handler.java:109)
на android.os.Looper.loop (Looper.java:166)
на android.app.ActivityThread.main (ActivityThread.java:7383)
в java.lang.reflect.Method.invoke (Method.java)
в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:469)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:963)
Вызывается android.view.InflateException: строка двоичного XML-файла # 48:
Строка двоичного XML-файла # 48: Ошибка надувания класса
com.google.android.material.navigation.NavigationView
Вызывается android.view.InflateException: строка двоичного XML-файла # 48:
Ошибка надувания класса
com.google.android.material.navigation.NavigationView
Вызывается java.lang.reflect.InvocationTargetException
в java.lang.reflect.Constructor.newInstance0 (Constructor.java)
в java.lang.reflect.Constructor.newInstance (Constructor.java:334)
на android.view.LayoutInflater.createView (LayoutInflater.java:658)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:801)
на android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:741)
на android.view.LayoutInflater.rInflate (LayoutInflater.java:874)
на android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:835)
на android.view.LayoutInflater.inflate (LayoutInflater.java:515)
на android.view.LayoutInflater.inflate (LayoutInflater.java:423)
на android.view.LayoutInflater.inflate (LayoutInflater.java:374)
на androidx.appcompat.app.AppCompatDelegateImpl.setContentView (AppCompatDelegateImpl.java:469)
на androidx.appcompat.app.AppCompatActivity.setContentView (AppCompatActivity.java:140)
на ee.siimplangi.rallytripmeter.activities.MainActivity.onCreate (MainActivity.kt: 186)
на android.app.Activity.performCreate (Activity.java:7358)
на android.app.Activity.performCreate (Activity.java:7349)
на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1219)
на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3126)
на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3284)
на android.app.ActivityThread.-wrap12 (неизвестный источник)в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1894)
на android.os.Handler.dispatchMessage (Handler.java:109)
на android.os.Looper.loop (Looper.java:166)
на android.app.ActivityThread.main (ActivityThread.java:7383)
в java.lang.reflect.Method.invoke (Method.java)
в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:469)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:963)
Вызывается android.view.InflateException: строка двоичного XML-файла # 29:
Строка двоичного XML-файла # 29: Ошибка надувания класса ImageView
Вызывается android.view.InflateException: строка двоичного XML-файла # 29:
Ошибка надувания класса ImageView
Вызывается android.content.res.Resources $ NotFoundException: идентификатор ресурса
0x7f0800a5
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:290)
at android.content.res.Resources.getValue(Resources.java:1476)
at androidx.appcompat.widget.AppCompatDrawableManager.createDrawableIfNeeded(AppCompatDrawableManager.java:235)
at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191)
at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102)
at androidx.appcompat.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:59)
at androidx.appcompat.widget.AppCompatImageView.(AppCompatImageView.java:78)
at androidx.appcompat.widget.AppCompatImageView.(AppCompatImageView.java:68)
at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:182)
at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1266)
at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1316)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:783)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.google.android.material.internal.NavigationMenuPresenter.inflateHeaderView(NavigationMenuPresenter.java:207)
at com.google.android.material.navigation.NavigationView.inflateHeaderView(NavigationView.java:281)
at com.google.android.material.navigation.NavigationView.(NavigationView.java:193)
at com.google.android.material.navigation.NavigationView.(NavigationView.java:104)
at java.lang.reflect.Constructor.newInstance0(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.view.LayoutInflater.createView(LayoutInflater.java:658)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at ee.siimplangi.rallytripmeter.activities.MainActivity.onCreate(MainActivity.kt:186)
at android.app.Activity.performCreate(Activity.java:7358)
at android.app.Activity.performCreate(Activity.java:7349)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1219)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3126)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3284)
at android.app.ActivityThread.-wrap12(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1894)
at android.os.Handler.dispatchMessage(Handler.java:109)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7383)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)