Неверное значение ресурса с возможностью стиля разрешено для приложения, скомпилированного с помощью Android Studio 3.0.

Мы столкнулись со странной проблемой, так как мы обновились до Android Studio 3.0 (с плагином Android Gradle 3.0.0).

Наше приложение использует библиотеку MaterialEditText. До AS 3.0 все работало нормально. Теперь, когда мы перенесли проект в AS 3.0 и скомпилировали приложение с этой версией Android Studio и соответствующим плагином Gradle, приложение вылетает при использовании компонентов MaterialEditText:

Caused by: java.lang.RuntimeException: Font asset not found res/drawable-mdpi-v4/ic_clear_search_api_holo_dark.png
   at android.graphics.Typeface.createFromAsset(Typeface.java:304)
   at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.getCustomTypeface(MaterialAutoCompleteTextView.java:488)
   at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.init(MaterialAutoCompleteTextView.java:385)
   at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.<init>(MaterialAutoCompleteTextView.java:325)
     ... 40 more

Кажется, что typedArray.getString(R.styleable.MaterialEditText_met_accentTypeface) внезапно превращается в какой-то случайный путь для рисования в строке MaterialAutoCompleteTextView 383. Однако это только происходит на устройствах с Android ниже 8.0. На Android 8.0 приложение работает нормально.

Наши стили не изменились при обновлении до AS 3.0:

<item name="met_typeface">fonts/UnitRoundedOT.otf</item>
<item name="met_accentTypeface">fonts/UnitRoundedOT.otf</item>

См. также соответствующую проблему библиотеки MaterialEditText.

При переносе проекта Android на AS 3.0 кажется, что только с помощью нового плагина Gradle

classpath 'com.android.tools.build:gradle:3.0.0'

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

Может ли это быть ошибкой плагина Gradle?


person Sven Jacobs    schedule 02.11.2017    source источник


Ответы (1)


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

строки.xml:

<string name="font_unit_rounded">fonts/UnitRoundedOT.otf</string>

стили.xml:

<item name="met_typeface">@string/font_unit_rounded</item>
<item name="met_accentTypeface">@string/font_unit_rounded</item>

Дополнительные сведения см. в проблеме 346. До сих пор непонятно, почему эта проблема вдруг возникла с Android Studio 3.0 и только для устройств с Android ‹ 8.0. Учитывая случайный характер этой проблемы, я предполагаю, что это ошибка плагина Android Gradle.

person Sven Jacobs    schedule 06.11.2017