it-swarm.com.ru

Android Studio 2.3 Beta 1 + Поддержка 25.1.0 = Предварительный просмотр сломан

Android Studio 2.3 Canary 3. Поддержка библиотек 25.1.0.

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

Во всех случаях это начало стека:

Exception Details Java.lang.NoSuchFieldError: ViewBackgroundHelper   
at Android.support.v7.widget.AppCompatBackgroundHelper.loadFromAttributes(AppCompatBackgroundHelper.Java:46)   
at Android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.Java:63)   
at Android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.Java:56)
....

.. Так далее.

Неважно, на что похож макет, теперь у меня возникает эта кровавая проблема, связанная с ViewBackgroundHelper. Кажется, не имеет значения, что это за макет или какие у него представления ... все, что проходит через AppCompat, попадает в эту ошибку в предварительном просмотре.

Никогда не видел этого раньше. Ранее была Android Studio 2.3 Canary 2 + поддержка библиотек 25.0.1.

Похоже, что просто невозможно {когда-либо обновить Android Studio или ее поддержку, не тратя часы на подобные вещи, а?

Спасибо за любые советы, спасибо

ОБНОВЛЕНИЕ

Похоже, я не единственный. Нашел ошибку, зарегистрированную здесь, уже отмеченную многими людьми:

https://code.google.com/p/Android/issues/detail?id=230183

ОБНОВЛЕНИЕ 2

Все еще проблема с AS 2.3 Beta 1. Все еще не вижу мои макеты. Одна и та же ошибка Java.lang.NoSuchFieldError: ViewBackgroundHelper везде.

21
Matthew Housser

Все работает сейчас.

  1. Я обновил сегодня до новейшей Android Studio: 2.3 Beta 3
  2. Мне было предложено обновить до последней версии com.Android.tools.build:gradle:2.3.0-beta3

Перезапущен, признан недействительным, перестроен; наконец, все отлично отрисовывается на панели предварительного просмотра впервые за 6 недель.

Похоже, они это исправили. В заключение.

5
Matthew Housser

По данным трекера, по состоянию на 10 января 2017 года:

https://code.google.com/p/Android/issues/detail?id=230183

Для тех из вас, кто использует плагин 2.3.0-бета1 Gradle, пожалуйста отключить кэш сборки, добавив

Android.enableBuildCache=false

в ваш файл gradle.properties и сообщите нам, если это решит проблему для тебя. После добавления строки в ваши gradle.properties, пожалуйста перестроить проект.

Благодарю.

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

6
Tim Malseed

Я подал вопрос на трекер. Другие участники обнаружили, что удаление некоторых других зависимостей, не относящихся к библиотеке Android, приводит к исчезновению проблемы. Исходя из этого я нашел решение (перепост из темы выпуска):

Дополнительная информация после расследования этого дополнительно:

Android Studio 2.2.3
Сборка № AI-145.3537739, построена 2 декабря 2016 г.
JRE: 1.8.0_76-release-b03 AMD64
JVM: 64-битный сервер OpenJDK VM от JetBrains s.r.o

Поддержка библиотеки: 25.1.0
Инструменты сборки: 25.0.2

После того, как я смог воспроизвести это на вышеприведенной студийной версии (2.2.3 Stable), я начал удалять другие библиотечные зависимости на основе информации, предоставленной другими в этой теме. После удаления библиотеки каллиграфии ( https://github.com/chrisjenx/Calligraphy ) и связанного кода предварительный просмотр макета снова начал работать правильно.

Интересно, что мне удалось повторно добавить библиотеку каллиграфии, и предварительный просмотр макета продолжал работать. Может быть, это указывает на какую-то проблему кеширования с плагином Android Gradle? 

Для других, сталкивающихся с этой проблемой, я предлагаю следующее:
1. Определите библиотеку, вызывающую проблему
2. Удалить библиотечную зависимость и связанный код
3. Сделай полную чистку и постройку
4. Убедитесь, что предварительный просмотр макета работает
5. Повторно добавьте библиотечную зависимость
6. Сделай полную чистку и постройку
7. Убедитесь, что предварительный просмотр макета работает

Примечание: я подозревал, что Calligraphy вызывал проблему, потому что он опирается на пользовательский атрибут xml с именем "fontPath", а также на некоторые манипуляции с контекстом. Если у вас есть какие-либо библиотеки, которые выполняют манипуляции с View под капотом, я предлагаю сначала удалить их.

2
Jeff Jones

Измените свой стиль AppTheme на это:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
</style>
1
Darush

У меня есть решение проблемы не в версии Android Studio.

Проблема в том, что версия Gradle вернулась к стабильной версии 2.2.3, после нескольких тестов она работает для меня. Это ошибка в бета-версии Gradle, и об этом уже сообщается в Google.

0
juanpaternina

Я решил эту проблему в следующих шагах

  • Удалите <проект>/<модуль>/сборка/сборка/промежуточные звенья/взорванный-aar
  • Перестроить проект
  • Убедитесь, что в exploded-aar есть только одна версия библиотеки поддержки
0
Takao Sumitomo