为什么我最近从三星设备 运行 Android 10 收到这么多 InflateException 崩溃?
How come I get so many InflateException crashes recently from Samsung devices running Android 10?
背景
由于某些原因 one of my apps,我最近在 "android.view.InflateException" 上遇到了相对较多的崩溃。我认为它是从上一两个版本开始的。
问题
根据 Play 控制台和 Crashlytics 的说法,出于某种原因,崩溃仅发生在 Android 10 的三星设备上。
目前可能是巧合,因为三星设备很受欢迎,但我仍然怀疑。
在 Play 管理中心,它并没有说太多:
在 Crashlytics 上,它似乎与 inflation 的视图有关,但它没有意义,因为它说它是 "Error inflating class TextView" 或 "Error inflating class androidx.appcompat.widget.Toolbar" :
我试过的
在网上和这里搜索,遗憾的是我找不到类似的案例。
我能想到的是,这可能是我使用的 Google 的 SDK 上的一些错误,它与三星设备有一些问题,因为他们最近才获得 Android 10。因为它只发生在过去的 1-2 个版本中,所以可能就是这样。
我实际上使用的是 Google 的 SDK 的最新版本。但是,我什至不使用那些花哨的东西。例如,在工具栏上,我的布局有 "CoordinatorLayout"、"AppBarLayout"、"Toolbar" 和 "FragmentContainerView"(用于首选项)。这是它的布局:
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".activities.activity_settings.SettingsActivity">
<com.google.android.material.appbar.AppBarLayout
android:fitsSystemWindows="true" android:id="@+id/appBarLayout"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"
app:title="@string/settings" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
以下是我尝试更新的一些依赖项,以减少该错误的常见程度:
'com.google.android.material:material:1.2.0-alpha03'
'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
'androidx.core:core-ktx:1.2.0-rc01'
'androidx.fragment:fragment-ktx:1.2.0-rc04'
'androidx.recyclerview:recyclerview:1.1.0'
'dev.chrisbanes:insetter:0.2.0'
'dev.chrisbanes:insetter-ktx:0.2.0'
问题
怎么会这样?什么可能导致它?我没有看到任何地方提到它。
这可能是一个已知错误吗?为什么它只适用于 Android 10 的三星设备?我已经在我自己的 Pixel 4 上使用 Android 10(以及使用其他版本 Android 的其他设备)对其进行了测试,并且运行良好...
似乎都是因为我使用了某些设备上未定义的系统颜色:
res/values-v29/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorAccent">@*android:color/accent_device_default_light</color>
</resources>
背景
由于某些原因 one of my apps,我最近在 "android.view.InflateException" 上遇到了相对较多的崩溃。我认为它是从上一两个版本开始的。
问题
根据 Play 控制台和 Crashlytics 的说法,出于某种原因,崩溃仅发生在 Android 10 的三星设备上。
目前可能是巧合,因为三星设备很受欢迎,但我仍然怀疑。
在 Play 管理中心,它并没有说太多:
在 Crashlytics 上,它似乎与 inflation 的视图有关,但它没有意义,因为它说它是 "Error inflating class TextView" 或 "Error inflating class androidx.appcompat.widget.Toolbar" :
我试过的
在网上和这里搜索,遗憾的是我找不到类似的案例。
我能想到的是,这可能是我使用的 Google 的 SDK 上的一些错误,它与三星设备有一些问题,因为他们最近才获得 Android 10。因为它只发生在过去的 1-2 个版本中,所以可能就是这样。
我实际上使用的是 Google 的 SDK 的最新版本。但是,我什至不使用那些花哨的东西。例如,在工具栏上,我的布局有 "CoordinatorLayout"、"AppBarLayout"、"Toolbar" 和 "FragmentContainerView"(用于首选项)。这是它的布局:
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".activities.activity_settings.SettingsActivity">
<com.google.android.material.appbar.AppBarLayout
android:fitsSystemWindows="true" android:id="@+id/appBarLayout"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"
app:title="@string/settings" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
以下是我尝试更新的一些依赖项,以减少该错误的常见程度:
'com.google.android.material:material:1.2.0-alpha03'
'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
'androidx.core:core-ktx:1.2.0-rc01'
'androidx.fragment:fragment-ktx:1.2.0-rc04'
'androidx.recyclerview:recyclerview:1.1.0'
'dev.chrisbanes:insetter:0.2.0'
'dev.chrisbanes:insetter-ktx:0.2.0'
问题
怎么会这样?什么可能导致它?我没有看到任何地方提到它。
这可能是一个已知错误吗?为什么它只适用于 Android 10 的三星设备?我已经在我自己的 Pixel 4 上使用 Android 10(以及使用其他版本 Android 的其他设备)对其进行了测试,并且运行良好...
似乎都是因为我使用了某些设备上未定义的系统颜色:
res/values-v29/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorAccent">@*android:color/accent_device_default_light</color>
</resources>