Problemy z renderowaniem Wyjątek zgłoszony podczas renderowania: com.android.ide.common.rendering.api.LayoutlibCallback

154

Napotkałem problem podczas tworzenia projektu w Android Studio. (Wersja 1.5.1)

Opisuję swoje działania krok po kroku:

  • Otwórz Android Studio.
  • Utwórz nowy projekt bez żadnej aktywności.
  • Zrób pustą aktywność.

I może wystąpić problem w trybie podglądu:

Otrzymuję tę wiadomość:

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

Śledzenie stosu:

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)

Jaki może być problem?

ShtihlFD
źródło

Odpowiedzi:

414

Miałem ten sam problem po kilku aktualizacjach kilka minut temu. Aby rozwiązać problem z renderowaniem, zmieniłem wersję Androida używaną do renderowania układów z Android Studio z powrotem na „API 23: Android 6.0”.

Studio Android

Elvis
źródło
5
Tak, to działa. Najlepiej też odznaczyć opcję „Automatycznie wybierz najlepszy”, ponieważ wybiera tylko najnowszą. Powinieneś ręcznie wybrać sdk, z którym chcesz wyświetlić podgląd.
Abhishek
Zrobiłem to, ale teraz pojawia się następujący błąd. Couldn't resolve resource @android:color/background_material_light
Martin Hoban
Ostrzegam: to powracający problem.
marciowb
Ale dlaczego ten problem występuje, gdy poziom API jest ustawiony na 24. A dlaczego nie w 23?
Jay Donga,
19

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

Zgłaszane, jeśli aplikacja próbuje wywołać określoną metodę klasy (statyczną lub instancję), a ta klasa nie ma już definicji tej metody. Zwykle ten błąd jest wychwytywany przez kompilator; ten błąd może wystąpić w czasie wykonywania tylko wtedy, gdy definicja klasy uległa zmianie w sposób niezgodny.

Twoja aplikacja musi być przeznaczona dla systemu Android 6.0 (poziom interfejsu API 23), aby włączyć to zachowanie; nie musisz dodawać żadnego dodatkowego kodu.

Po prostu wybierz „API 23: Android 6.0” w sekcji Podgląd. wprowadź opis obrazu tutaj

IntelliJ Amiya
źródło
2

Miałem ten sam problem, kiedy zainstalowałem Android Studio 2.1 na Ubuntu 14.04, Nawet ikona robota Androida, która wyświetla wersję Androida używaną do renderowania układu, pokazywała tylko wersję API Level 24 i żadnych innych wersji.

Musiałem włączyć pobieranie API 23, przechodząc do poniższej ścieżki

Narzędzia -> Menedżer SDK -> Android SDK -> Platformy SDK -> Nazwa.

Zaznacz opcję Android 6.0 (Marshwallow), która zostanie pobrana teraz. Teraz będziesz mógł zobaczyć poziom API 23 i wybrać, które możemy obejść ten problem.

crackerplace
źródło
1

Podobny problem miałem z Androidem Studio 1.5.1 w Windows 10. Podgląd nie działał bez względu na wybraną wersję Androida. Śledzenie stosu zaczyna się od:

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

Kiedy usunąć atrybut tools:showIn="@layout/activity_main" z RelativeLayoutrozwiązuje problem dla wszystkich wersji Androida z wyjątkiem „N”. Mam włączony Android 2.2, 2.3.3, 5.0.1 i 6.0

Nie potrafię jednak wyjaśnić, dlaczego akcja rozwiązuje problem ani dlaczego działa dla wersji N.

githeko
źródło
0

To nie jest aktualna odpowiedź, ale dla każdego, kto szuka kogoś, kto ma ten sam problem, aktualizacja studia Android załatwia sprawę. Chociaż wszystkie powyższe sugestie działają, chcesz uzyskać aktualizację (wersja 2.1.2).

Stephen Nyamweya
źródło