Android 8.1.0(Nexus 5X)ImageView加载崩溃问题求助
Android 8.1.0 Nexus 5X上的启动屏图标资源找不到崩溃问题
我的应用图标带有渐变效果,并且使用了Android 12启动屏。99%的崩溃发生在运行Android 8.1.0的Nexus 5X设备上,我尝试在模拟器中复现但未能成功。

这是drawable-v23和drawable-v24中仅有的资源,该资源是通过Android Studio->资源管理器->ImageAsset自动生成的。
由于图标带有渐变效果,我在v23版本中将其更新为PNG而非矢量图,布局代码如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width="@dimen/dp200" android:height="@dimen/dp200" android:gravity="center"> <inset android:drawable="@drawable/ic_logo" android:insetLeft="@dimen/dp27" android:insetTop="@dimen/dp16" android:insetRight="@dimen/dp27" android:insetBottom="@dimen/dp17" /> </item> </layer-list>
如果不这样做,在Android 23的模拟器中也会出现相同的崩溃。我曾考虑将所有图标替换为PNG,但这样会导致Android 12启动屏中的图标不够清晰(相比矢量图有明显模糊)。
项目的SDK版本配置:
minSdkVersion 23 targetSdkVersion 33
以下是Crashlytics中显示的崩溃信息:
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.android/com.xxx.android.presentation.ui.login.view.LoginActivity}: android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class ImageView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11() at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f0802ff at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:215) at android.content.res.Resources.getValue(Resources.java:1316) at androidx.appcompat.widget.ResourceManagerInternal.createDrawableIfNeeded(ResourceManagerInternal.java:18) at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:2) at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:1) at androidx.appcompat.content.res.AppCompatResources.getDrawable(:4) at androidx.appcompat.widget.AppCompatImageHelper.loadFromAttributes(:53) at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:3) at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:2) at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:2) at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:2) at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:148) at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1) at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) at android.view.LayoutInflater.inflate(LayoutInflater.java:515) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:14) at androidx.databinding.ViewDataBinding.u(ViewDataBinding.java:3) at com.xxx.android.databinding.FragmentLoginBinding.inflate(FragmentLoginBinding.java:7) at com.xxx.android.databinding.FragmentLoginBinding.inflate(FragmentLoginBinding.java:7) at com.xxx.android.presentation.ui.login.view.LoginFragment$bindingInflater$1.invoke(LoginFragment.java:16) at com.xxx.android.presentation.ui.login.view.LoginFragment$bindingInflater$1.invoke(LoginFragment.java:16) at com.xxx.android.presentation.ui.base.BaseFragment.onCreateView(BaseFragment.java:12) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:25) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:175) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:149) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:30) at androidx.fragment.app.FragmentManager.D0(FragmentManager.java:28) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:9) at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:1) at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:19) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:260) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:149) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:30) at androidx.fragment.app.FragmentManager.D0(FragmentManager.java:28) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:9) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:11) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:4) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:20) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334) at android.app.Activity.performStart(Activity.java:7029) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2741) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11() at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
恳请各位提供调试方面的帮助。
内容的提问来源于stack exchange,提问作者hushed_voice
相关产品推荐
相关产品推荐

