在渲染过程中引发异常:二进制XML文件行#-1:膨胀类<未知>时出错。

64

问题的图片

我试图在布局中包含复选框,在拖放后,我收到了这个错误:

渲染期间发生异常:二进制 XML 文件行 #-1:错误解压缩 class<unknown>

XML 文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.nidhigupta.shopping2.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:id="@+id/textView" />

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New CheckBox"
    android:id="@+id/checkBox"
    android:layout_below="@+id/textView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

</RelativeLayout>

请提供逐步解决方案。

详细信息链接如下:

java.lang.NoSuchMethodError: android.graphics.drawable.VectorDrawable_Delegate.nCreateTreeFromCopy(JJ)J
at android.graphics.drawable.VectorDrawable.nCreateTreeFromCopy(VectorDrawable.java)
at android.graphics.drawable.VectorDrawable.access$400(VectorDrawable.java:204)
at android.graphics.drawable.VectorDrawable$VectorDrawableState.createNativeTreeFromCopy(VectorDrawable.java:837)
at android.graphics.drawable.VectorDrawable$VectorDrawableState.<init>(VectorDrawable.java:812)
at android.graphics.drawable.VectorDrawable.mutate(VectorDrawable.java:268)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:817)
at android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:329)
at android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState.addStateSet(AnimatedStateListDrawable.java:602)
at android.graphics.drawable.AnimatedStateListDrawable.parseItem(AnimatedStateListDrawable.java:525)
at android.graphics.drawable.AnimatedStateListDrawable.inflateChildElements(AnimatedStateListDrawable.java:453)
at android.graphics.drawable.AnimatedStateListDrawable.inflate(AnimatedStateListDrawable.java:385)
at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1224)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1197)
at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:315)
at android.content.res.BridgeTypedArray.getDrawable(BridgeTypedArray.java:681)
at android.widget.CompoundButton.<init>(CompoundButton.java:89)
at android.widget.CheckBox.<init>(CheckBox.java:70)
at android.widget.CheckBox.<init>(CheckBox.java:66)
at android.widget.CheckBox.<init>(CheckBox.java:62)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.BridgeInflater.onCreateView(BridgeInflater.java:107)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:149)
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.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:317)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:520)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:508)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:967)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:508)
at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:75)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:620)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:617)
at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:371)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:617)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:639)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:519)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
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)

1
点击“详细信息”链接,它显示了什么?错误在你的XML的第一行。 - OneCricketeer
请查看我编辑的帖子,其中包括它。 @cricket_007 - Aakriti Gupta
1
很有趣的是,这个错误只会在SDK=24的情况下发生... 如果你有另一个版本的SDK,你可以选择它,那么这个错误就会消失(尝试更改...只需点击设备预览上方的API 24按钮)。 - guipivoto
是的,我建议使用较低(稳定)的API进行渲染。 - OneCricketeer
非常感谢,它起作用了..:) @cricket_007 @Guillherme P - Aakriti Gupta
8个回答

133

2016年9月更新:

在Android Studio v2.2上,问题已不再出现。请升级您的Android Studio,这个问题将不再出现。

2016年8月更新:

在Android Studio v2.1.3中仍然存在该问题。

原始回答:

看起来这是一个问题,并且正在被Google处理HERE:

其他一些人也面临相同的问题,解决方法始终是将预览API从24更改为23(或任何其他版本)。

您可能需要下载先前版本的SDK。 您不需要更改build.gradle...只需下载SDK,Android Studio就允许您在布局预览中更改SDK。

输入图像描述


我自己也遇到了同样的问题。感谢你的答案! - Strahinja Ajvaz
这里也发生了同样的事情。iOS > Android - Jared
使用API 23或更低版本“修复问题”。我只想添加,如果我尝试为Android定义<meta-data ...>并将其与API 15或更低版本一起使用以在操作栏中放置“返回”按钮,则会出现此问题。如果我删除此<meta-data ...>,则渲染会顺利进行。我将更新我的AS到2.2版本,并查看是否可以解决此问题,一旦我的*nix发行版的软件包维护者发布它(主要稳定分支)。 - José
我的意思是将这个添加到我的 AndroidManifest.xml 文件中。当然要考虑适当的活动。 - José

4
渲染问题解决方案已解决,请点击此处查看答案。Android Studio默认会自动选择最佳选项APB,因此您需要手动选择上一个版本API 23

2
你可以尝试更改AppTheme。

这对我有用。我手动选择了AppTheme而不是默认的Light,问题得到解决。 - Donki

1
我有类似的问题,并通过管理绘制对象的像素大小和XML文件中控件的宽度-高度来解决它。请勿在XML文件中添加未在类文件中使用的任何控件。

1
我曾经遇到过类似的问题。我通过减小drawable文件夹中图片的大小来解决它。

0

我已经按照建议选择了之前的版本,但仍然没有看到之前的图片。

我所做的是:

  1. 在版本列表中选择“上一个版本”和“预览Android版本”。

  2. 一旦出现早期版本的Android屏幕,我点击其中一个旧版本并拖动到不显示图像的图像布局上。

对我来说这很有效,希望能为您服务。我们在阅读。


0

我之前使用的是API 22,但我的系统上有API 25可用。

将有问题的选项卡移动到不同的分屏视图中解决了问题。


0

我以前遇到过这个异常,对我有用的是文件 -> 无效缓存/重启。

你可以尝试一下,但你应该知道所有本地历史记录都将被删除。

编辑:从API 24降级到API 23也可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接