Android недопустимый градиент тега списка состояний цветов - PullRequest
0 голосов
/ 27 октября 2018

У меня есть приложение с более чем 5000 загрузок и более 500 активных пользователей ежедневно, и из ниоткуда я начал получать странную ошибку на Crashlytics:

Caused by android.content.res.Resources$NotFoundException: File res/drawable-anydpi-v24/ic_tickets.xml from drawable resource ID #0x7f0700b3
       at android.content.res.Resources.loadDrawableForCookie(Resources.java:2748)
       at android.content.res.Resources.loadDrawable(Resources.java:2643)
       at android.content.res.TypedArray.getDrawable(TypedArray.java:870)
       at android.widget.TextView.<init>(TextView.java:921)
       at android.widget.TextView.<init>(TextView.java:703)
       at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:76)
       at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:72)
       at java.lang.reflect.Constructor.newInstance(Constructor.java)


Caused by android.content.res.Resources$NotFoundException: File res/drawable-anydpi-v24/$ic_tickets__0.xml from color state list resource ID #0x7f070017
       at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2858)
       at android.content.res.Resources.loadColorStateList(Resources.java:2807)
       at android.content.res.TypedArray.getColor(TypedArray.java:439)
       at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1605)
       at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1584)
       at android.graphics.drawable.VectorDrawable.inflateInternal(VectorDrawable.java:666)
       at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:571)
       at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1215)
       at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1124)


Caused by org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: invalid color state list tag gradient
       at android.content.res.ColorStateList.createFromXmlInner(ColorStateList.java:217)
       at android.content.res.ColorStateList.createFromXml(ColorStateList.java:201)
       at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2854)
       at android.content.res.Resources.loadColorStateList(Resources.java:2807)
       at android.content.res.TypedArray.getColor(TypedArray.java:439)
       at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1605)

Трассировка стека намного длиннее этой, более 500 строк на Crashlytics, я вставил сюда то, что, по моему мнению, может быть полезно для понимания проблемы.

Если я правильно понял, это жалуется на то, что один из моих ресурсов отсутствует или поврежден; что бы это могло быть?

Но ресурс в апк нетронут:

<vector android:height="24dp" android:viewportHeight="512"
    android:viewportWidth="512" android:width="24dp"
    xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:pathData="M381.845,292.27c0,11.032 -8.943,19.975 -19.975,19.975s-19.975,-8.943 -19.975,-19.975c0,-11.032 8.943,-19.975 19.975,-19.975S381.845,281.238 381.845,292.27zM361.869,332.221c-11.032,0 -19.975,8.943 -19.975,19.975s8.943,19.975 19.975,19.975s19.975,-8.943 19.975,-19.975S372.902,332.221 361.869,332.221zM361.869,392.147c-11.032,0 -19.975,8.943 -19.975,19.975s8.943,19.975 19.975,19.975s19.975,-8.943 19.975,-19.975S372.902,392.147 361.869,392.147zM307.418,136.36c-9.983,4.696 -14.268,16.596 -9.572,26.578c4.696,9.983 16.596,14.268 26.578,9.572c9.983,-4.696 14.268,-16.596 9.572,-26.578C329.3,135.95 317.401,131.664 307.418,136.36zM451.759,352.197c0,22.029 17.922,39.951 39.951,39.951h19.975V512H0.314V392.147H20.29c22.029,0 39.951,-17.922 39.951,-39.951s-17.922,-39.951 -39.951,-39.951H0.314V192.393h0.509l-0.042,-0.089L408.489,0l50.866,108.128l-17.013,8.861c-13.29,6.921 -21.544,20.506 -21.544,35.453c0,22.029 17.922,39.951 39.951,39.951h50.937v119.853H491.71C469.681,312.246 451.759,330.168 451.759,352.197zM94.244,192.393h297.352c-6.822,-11.763 -10.75,-25.403 -10.75,-39.951c0,-23.307 10.023,-44.953 27.021,-59.913l-18.505,-39.335l-81.134,38.269c4.355,9.886 0.068,21.491 -9.762,26.115c-9.818,4.618 -21.473,0.536 -26.323,-9.095L94.244,192.393zM411.808,352.197c0,-37.163 25.503,-68.482 59.926,-77.374v-42.479h-89.889c0,11.032 -8.943,19.975 -19.975,19.975s-19.975,-8.943 -19.975,-19.975H40.265v42.479c34.424,8.891 59.926,40.211 59.926,77.374s-25.503,68.482 -59.926,77.374v42.479h301.629c0,-11.032 8.943,-19.975 19.975,-19.975s19.975,8.943 19.975,19.975h89.889V429.57C437.31,420.678 411.808,389.36 411.808,352.197z">
        <aapt:attr name="android:fillColor">
            <gradient android:endX="256.00745" android:endY="511.99982"
                android:startX="256.00745"
                android:startY="-0.0150070675" android:type="linear">
                <item android:color="#FF2AF598" android:offset="0"/>
                <item android:color="#FF009EFD" android:offset="1"/>
            </gradient>
        </aapt:attr>
    </path>
</vector>

Drawable - это очень маленький и простой значок для кнопки в приложении, я загрузил ее из библиотеки значков, она открывается и отлично работает во всех моих тестах.

Вторая странная вещь об этом состоит в том, что более 500 активных пользователей, которых я имел сегодня, это происходит только с 4 пользователями с одним и тем же смартфоном:

Device
Brand: LGE
Model: LG K10 LTE
Orientation: Portrait
RAM free: 170.92 MB
Disk free: 574.64 MB
Operating System
Version: 6.0
Orientation: Portrait
Rooted: No
Crash

Есть ли какие-либо проблемы с этой моделью смартфона? Что я могу сделать, чтобы исправить это для затронутых пользователей?

1 Ответ

0 голосов
/ 27 октября 2018

это потому, что вы используете несколько атрибутов, не поддерживаемых до уровня API 24.

например.startX, endX, startY, endY и offset.

Android Marshmallow 6.0 - это уровень API 23 ...

, что invalid color state list tag gradientисходит от offset:

<item android:color="#FF2AF598" android:offset="0"/>
<item android:color="#FF009EFD" android:offset="1"/>

эта проблема, скорее всего, не LG, а Marshmallow.

...