XmlPullParserException二进制XML文件中的行#17 标签需要viewportWidth> 0

问题描述:

这是一个后续问题,这个问题:XmlPullParserException二进制XML文件中的行#17 <vector>标签需要viewportWidth> 0

Update Android Support Library to 23.2.0 cause error: XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0

我也更新了支持库至23.2,并开始得到错误:

XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0 

这个问题解决了它的Android Studio和Gradle。如何在不使用Gradle的情况下使用Eclipse来解决这个问题?

+0

[Update Android Support Library to 23.2.0 cause cause error:XmlPullParserException Binary XML file line#17 tag requires viewportWidth> 0](http:// *。com/questions/35622438/update-android-support-library-to-23-2-0-cause-error-xmlpullparserexception-bin) –

先前的回答这个问题,必须对谁使用摇篮开发的解决方案,但我不使用摇篮,所以我想总结自己的答案,帮助几个人和我最终做了什么。我接受了我自己的回答,而不是他自从像我说的那样,我不使用Gradle,所以我没有使用他写的。

我做了几件事情让它最终工作。可能的解决方案是:

首先为用户摇篮:

1)还原支持库旧版本,因为这其中有一个错误。

2)使用compile'c​​om.android.support:appcompat-v7:23.2.1',因为该错误已修复。

3)摇篮插件2.0:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

或者你可以使用等级生成工具1.5.0(classpath 'com.android.tools.build:gradle:1.5.0'

defaultConfig { 
    generatedDensities = [] 
} 

//不需要用这个2.0摇篮

aaptOptions { 
    additionalParameters "--no-version-vectors" 
} 

这是非Gradle用户的一部分:

1)打开SDK管理器。

2)卸载均来自API的22“Android Wear X”(其中X是ARM或Intel)和23

3)I然后仍然在的样式的程序兼容性库中的一个有一个编译错误。我只是将它们评论出来(如果它使用非常特定的风格,我将冒着非常特定的设备无法工作的风险)。

之后,我清理了项目,它刚开始工作。

您可以切换回以前版本的程序兼容性库(快速修复)的:

compile 'com.android.support:appcompat-v7:23.1.1' 

或保留当前库版本,并进行相应的更新您的构建gradle这个文件由google in version 23.2.0 release note解释。

//for Gradle Plugin 2.0+ 
android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

如果您使用的摇篮1.5,你会改用

defaultConfig { 
    generatedDensities = [] 
} 

// This is handled for you by the 2.0+ Gradle Plugin 
aaptOptions { 
    additionalParameters "--no-version-vectors" 
} 

不要忘记更新您的gradle这个构建工具1.5.0版本至少或你不能使用新参数,如generatedDensities:为什么here

+3

这适用于me.my gradle构建工具版本为1.3.1。我只是将aaptOptions {0}附加参数“ - 无版本向量” }添加到我的build.gradle而不添加generatedDensities = []并且它可以工作 –

+0

@AllenVork您建议的方式适用于我。谢谢 –

+0

我得到同样的问题。并且矢量也不起作用 –

对于n

classpath 'com.android.tools.build:gradle:1.5.0' 

更多相关信息只有EW用户,这个问题是固定的:

compile 'com.android.support:appcompat-v7:23.2.1'

我在更新我的Gradle依赖到最新版本后忘了更新我的项目的buildToolsVersion后,我在Android Studio 2.2中得到了同样的错误。

我改变:

compile 'com.android.support:appcompat-v7:22.2.1' 

到:

compile 'com.android.support:appcompat-v7:24.2.1' 

虽然buildToolsVersion保持在 “22.0.1” 像这样:

buildToolsVersion "22.0.1" 

所以我所做的就是更新buildToolsVersion到24像这样:

buildToolsVersion "24" 

因为它以前已经与SDK管理器下载。因此,从SDK管理器检查最新的buildToolsVersion并查看它是否与依赖版本匹配。

希望这可以帮助别人。

尝试已经提供的答案后,该应用在某些设备(主要是三星)上崩溃。因此,既然一直以来,我尝试加载矢量绘图资源这样

Drawable drawable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.resource_id); 

AppCompatDrawableManager内部尝试各种方法来获取绘制:

Drawable getDrawable(@NonNull Context context, @DrawableRes int resId, 
      boolean failIfNotKnown) { 
     checkVectorDrawableSetup(context); 

     Drawable drawable = loadDrawableFromDelegates(context, resId); 
     if (drawable == null) { 
      drawable = createDrawableIfNeeded(context, resId); 
     } 
     if (drawable == null) { 
      drawable = ContextCompat.getDrawable(context, resId); 
     } 

     if (drawable != null) { 
      // Tint it if needed 
      drawable = tintDrawable(context, resId, failIfNotKnown, drawable); 
     } 
     if (drawable != null) { 
      // See if we need to 'fix' the drawable 
      DrawableUtils.fixDrawable(drawable); 
     } 
     return drawable; 
    } 

因此,它适用于所有Android版本和所有设备(希望) 。

注意:不要尝试使用Picasso(2.5.2)或Glide(3.7.0)的方法加载矢量绘图。因为他们在内部使用已弃用的getDrawable(@DrawableRes int id)方法。这将导致某些设备上的Resources.NotFoundException

对于像我这样仍然在不使用Gradle的情况下使用Eclipse的人,我发生了在前支持Lollipop设备上运行的Android支持库r23.2.0的错误(API < 21)。

此问题已在r23.2.1中得到解决,我已成功地在API级别16上运行我的项目。

此版本的Eclipse库不再可通过SDK管理器使用,但是您可以从此link手动下载它。