Проблемы с рендерингом Исключение, возникающее при рендеринге: com.android.ide.common.rendering.api.LayoutlibCallback

154

Я столкнулся с проблемой при создании проекта в Android Studio. (Версия 1.5.1)

Я опишу свои действия шаг за шагом:

  • Откройте Android Studio.
  • Создайте новый проект без какой-либо активности.
  • Сделайте пустое действие.

И может быть проблема в режиме предварительного просмотра:

Я получаю это сообщение:

Rendering Problems Exception raised during rendering: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;

В трассировке стека:

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser(Ljava/lang/String;)Lorg/xmlpull/v1/XmlPullParser;
    at com.android.layoutlib.bridge.impl.ResourceHelper.getInternalComplexColor(ResourceHelper.java:146)
    at com.android.layoutlib.bridge.impl.ResourceHelper.getColorStateList(ResourceHelper.java:231)
    at android.content.res.BridgeTypedArray.getColorStateList(BridgeTypedArray.java:308)
    at android.widget.TextView.<init>(TextView.java:776)
    at android.widget.TextView.<init>(TextView.java:705)
    at android.widget.TextView.<init>(TextView.java:701)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:50)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:45)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:41)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:163)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95)
    at com.android.layoutlib.bridge.bars.StatusBar.<init>(StatusBar.java:67)
    at com.android.layoutlib.bridge.impl.Layout.createStatusBar(Layout.java:222)
    at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:144)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:213)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

В чем может быть проблема?

ShtihlFD
источник

Ответы:

414

У меня была такая же проблема после нескольких обновлений несколько минут назад, что я сделал, чтобы решить проблему рендеринга, чтобы изменить версию Android, используемую для рендеринга макетов из Android Studio, обратно на «API 23: Android 6.0».

Студия Android

Элвис
источник
5
Да, это работает. Кроме того, лучше снять флажок «Автоматически выбирать лучшие», так как он выбирает только последний. Вы должны вручную выбрать SDK, который вы хотите просмотреть.
Абхишек,
Я сделал это, но теперь я получаю следующую ошибку. Couldn't resolve resource @android:color/background_material_light
Мартин Хобан
Просто чтобы предупредить: это постоянная проблема.
Marciowb
Но почему эта проблема возникает, когда уровень API установлен на 24. А почему не на 23?
Джей Донга
19

java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;

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

Ваше приложение должно предназначаться для Android 6.0 (уровень API 23), чтобы включить это поведение; Вам не нужно добавлять дополнительный код.

Просто выберите «API 23: Android 6.0» в разделе предварительного просмотра. введите описание изображения здесь

IntelliJ Amiya
источник
2

У меня была та же проблема, когда я установил Android Studio 2.1 на Ubuntu 14.04. Даже значок робота Android, который отображает версию Android, используемую для макета рендеринга, показывал только версию API Level 24 и никаких других версий.

Я должен был включить API 23 для загрузки, перейдя по указанному ниже пути

Сервис -> SDK Manager -> Android SDK -> Платформы SDK -> Имя.

Проверьте опцию Android 6.0 (Marshwallow). Это будет загружено сейчас. Теперь вы сможете увидеть API-уровень 23 и выбрать способ решения этой проблемы.

crackerplace
источник
1

У меня была похожая проблема с Android Studio 1.5.1 в Windows 10. Предварительный просмотр не работал, независимо от того, какая версия Android была выбрана. Трассировка стека начинается с:

"java.lang.NoSuchMethodError: com.android.ide.common.rendering.api.LayoutlibCallback.getXmlFileParser (Ljava / lang / String;) Lorg / xmlpull / v1 / XmlPullParser;"

Когда я удаляю атрибут tools:showIn="@layout/activity_main" из RelativeLayoutпроблемы, проблема решается для всех версий Android, кроме «N». У меня Android 2.2, 2.3.3, 5.0.1 и 6.0 включены

Я не могу объяснить, почему действие решает проблему, хотя или почему оно работает для версии N.

githeko
источник
0

Это не своевременный ответ, но для тех, кто ищет кого-то, кто испытывает ту же проблему, обновление Android Studio делает свое дело. Пока все предложения выше работают, вы хотите получить обновление (версия 2.1.2).

Стивен Нямвея
источник