Vấn đề kết xuất Ngoại lệ được nêu ra trong quá trình kết xuất: com.android.ide.common.rendering.api.LayoutlibCallback


154

Tôi đã gặp một vấn đề khi tạo một dự án trong Android Studio. (Phiên bản 1.5.1)

Tôi mô tả hành động của mình từng bước:

  • Mở Android Studio.
  • Tạo một dự án mới mà không có bất kỳ hoạt động.
  • Thực hiện một hoạt động trống.

Và có thể có một vấn đề trong chế độ xem trước:

Tôi nhận được tin nhắn này:

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

Trong ngăn xếp dấu vết:

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)

Điều gì có thể là vấn đề?

Câu trả lời:


414

Tôi đã gặp vấn đề tương tự sau một vài cập nhật trước đây, điều tôi đã làm để giải quyết vấn đề kết xuất là thay đổi phiên bản Android được sử dụng để kết xuất bố cục từ Android Studio trở lại thành "API 23: Android 6.0".

Xưởng Android


5
Vâng, nó hoạt động. Ngoài ra, tốt nhất là bỏ chọn "Tự động chọn tốt nhất", vì nó chỉ chọn cái mới nhất. Bạn nên chọn thủ công sdk mà bạn muốn xem trước.
Abhishek

Tôi đã làm điều này nhưng tôi nhận được lỗi sau đây. Couldn't resolve resource @android:color/background_material_light
Martin Hoban

Chỉ để cảnh báo: đó là một vấn đề thường xuyên.
marciowb

Nhưng, tại sao vấn đề này xảy ra khi mức API được đặt thành 24. Và tại sao không ở 23?
Jay Donga

19

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

Ném nếu một ứng dụng cố gắng gọi một phương thức được chỉ định của một lớp (tĩnh hoặc thể hiện) và lớp đó không còn có định nghĩa về phương thức đó nữa. Về cơ bản, lỗi này được trình biên dịch bắt gặp; lỗi này chỉ có thể xảy ra trong thời gian chạy nếu định nghĩa của một lớp đã thay đổi không thể thay đổi.

Ứng dụng của bạn phải nhắm mục tiêu Android 6.0 (API cấp 23) để kích hoạt hành vi này; bạn không cần thêm bất kỳ mã nào.

Chỉ cần chọn "API 23: Android 6.0" trong Phần xem trước. nhập mô tả hình ảnh ở đây


2

Tôi gặp vấn đề tương tự khi tôi cài đặt android studio 2.1 trên Ubuntu 14.04. Ngay cả biểu tượng robot android hiển thị phiên bản Android được sử dụng để bố trí kết xuất chỉ hiển thị phiên bản API Cấp 24 và không có phiên bản nào khác.

Tôi đã phải kích hoạt API 23 để được tải xuống bằng cách điều hướng đến đường dẫn bên dưới

Công cụ -> Trình quản lý SDK -> SDK Android -> Nền tảng SDK -> Tên.

Kiểm tra tùy chọn Android 6.0 (Marshwallow). Cái này sẽ được tải xuống ngay bây giờ. Bây giờ bạn sẽ có thể thấy API cấp 23 và bằng cách chọn chúng tôi có thể giải quyết vấn đề này.


1

Tôi gặp vấn đề tương tự với Android Studio 1.5.1 trong Windows 10. Bản xem trước không hoạt động cho dù phiên bản Android nào được chọn. Stacktrace bắt đầu bằng:

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

Khi tôi xóa thuộc tính tools:showIn="@layout/activity_main" khỏi sự RelativeLayoutcố sẽ giải quyết cho tất cả các phiên bản Android ngoại trừ "N". Tôi đã bật Android 2.2, 2.3.3, 5.0.1 và 6.0

Tôi không thể giải thích lý do tại sao hành động giải quyết vấn đề mặc dù hoặc tại sao nó hoạt động cho phiên bản N.


0

Đây không phải là câu trả lời kịp thời nhưng đối với bất kỳ ai đang tìm kiếm bất kỳ ai khác gặp phải vấn đề tương tự, một bản cập nhật của studio android thực hiện thủ thuật này. Trong khi tất cả các đề xuất ở trên bạn muốn nhận được cập nhật (phiên bản 2.1.2).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.