这该死的车祸快把我逼疯了。我的应用程序图标有渐变,并且我正在使用 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 启动画面中就不那么清晰了(与矢量相比有点明显模糊)
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)
任何调试此问题的帮助将不胜感激。