Исключение ресурсов не найдено только при работе на определенных c устройствах - PullRequest
1 голос
/ 19 июня 2020

Я получаю ошибку sh в эмуляторе Android Studio и при предварительных проверках Google PLay только для устройства.

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

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_amalfi_pro_link.xml from drawable resource ID #0x7f080071

Основные различия, которые я вижу с отказавшим устройством, заключаются в том, что оно имеет более низкое разрешение - поэтому я проверяю, что векторные чертежи находятся в папке с возможностью рисования, а не в специальной папке c dpi.

Устройство, вызывающее сбой, также соответствует API 19, тогда как рабочие устройства являются более поздними версиями. (Я получаю аналогичную ошибку sh для другого ресурса, который у меня еще не был полностью инвестирован для API 21 в тестах перед запуском).

Обратите внимание, что у меня есть устаревшая поддержка векторных чертежей, включенная в моем build.gradle (app) с:

    vectorDrawables {
        useSupportLibrary true
    }

Я пробовал чистую сборку - без изменений.

Я пробовал аннулировать кеши и перестроить - без изменений.

Я пытался изменить возможность рисования для чего-то еще, изменение обратно и восстановление - без изменений.

У меня был такой же cra sh с другим рисованием на том же тестовом устройстве эмулятора и замена этого рисования другим рисованием позволила избежать этого в первую очередь cra sh и переместил меня к следующему объекту для рисования, вызвав cra sh, так что он, похоже, связан с определенными c чертежами - НО рисование есть и работает на других устройствах.

Это так расстраивает, я просто не знаю, где еще искать проблему.

Обновление:

Следуя нижеприведенному содержанию, требующему разъяснений ng, используется ли рассматриваемый вектор, о котором идет речь, в каком-либо другом действии, которое я тестировал еще.

  • если я добавляю неудачный вывод к моему основному действию, он отлично работает в моем основном действии, но все еще не может быть найден в действии, в котором он вызывает ошибку sh и по-прежнему вызывает ошибку sh
  • Кажется, в моем проекте есть как минимум три векторных чертежа, которые ведут себя одинаково, в трех разных действиях
  • , если я заменяю вызывающий ошибку drawable в сбойном действии другим векторным отрисовываемым (не одним из других, вызывающих ошибку sh), то рассматриваемое действие не растрескивается sh.
  • если я заменю вызывающий нарушение в трех действиях, вызывающих сбой, на один из других вызывающих сбоев, тогда действие выйдет из строя, сообщая, что новый вызывающий нарушение не может быть найден.

Я проверил рисование XML и он идентичен (кроме деталей пути) другим векторным чертежам, которые я использую на этом проект, который не вызывает хрена sh.

Ответы [ 2 ]

1 голос
/ 22 июня 2020

Начиная с выпуска 1.1.0-alpha01 библиотеки AndroidX AppCompat , для составных векторных чертежей существуют атрибуты "compat":

  • app:drawableTopCompat
  • app:drawableLeftCompat
  • app:drawableStartCompat
  • et c

Для использования этих атрибутов необходимо использовать AppCompatTextView. Если ваш макет раздувается LayoutInflater, созданным из темы AppCompat, это произойдет автоматически при использовании тегов <TextView>. В противном случае вам придется явно указать их как теги <androidx.appcompat.widget.AppCompatTextView>.

0 голосов
/ 22 июня 2020

Я нашел причину проблемы.

Cra sh происходило везде, где векторный чертеж использовался в составном чертеже.

В самих чертежах не было ничего плохого , Я просто переместил их из составного чертежа в свои собственные ImageView внутри LinearLayout, чтобы воссоздать тот же эффект.

Менее эффективный макет, но теперь никаких сбоев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...