将Android支持库更新为23.2.0导致错误:XmlPullParserException二进制XML文件行#17 <vector>标签需要viewportWidth> 0


87

我尝试将支持库更新到23.2.0,并遇到此错误:

Exception while inflating <vector>
org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chotot.vn.dev/com.chotot.vn.v2.activities.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2091)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
at android.content.res.Resources.loadDrawable(Resources.java:2087)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

我的 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/f_actionbar"
        android:name="com.chotot.vn.fragments.ActionBarFragment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.Toolbar
        android:id="@+id/main_tool_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_alignParentTop="true"
        android:background="@color/action_bar_bg">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <include
                android:id="@+id/main_action_bar_layout"
                layout="@layout/layout_actionbar_custom_search"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="top" />

            <LinearLayout
                android:id="@+id/main_action_bar_layout_content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/main_action_bar_layout"
                android:orientation="vertical" />
        </RelativeLayout>
    </android.support.v7.widget.Toolbar>

    <FrameLayout
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/main_tool_bar" />

</RelativeLayout>

我该如何解决?



30
我开始放弃整个&**&#$进行android开发!不能相信我一个人一直在浪费很多时间,因为一个人升级到一个新的SDK版本来修复他们在先前版本和现在这个版本中引入的错误!ARRGGGGHHH!
霓虹灯Warge'Mar

1
我选择了API v23.1.0:P
Neon Warge '16

4
24.0.0如果有人对它有提示,也有同样的问题,请分享,我真的尝试了所有事情。
wviana 2013年

1
@NeonWarge ...我已经去过几次街区了。这些答案对我没有任何帮助。我肯定会开始感到疼痛
Jan Jansz,2016年

Answers:


54

在您的build.gradle文件中使用此代码

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

如果您使用Gradle 1.5,则改为使用

defaultConfig {
        generatedDensities = []
    }

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

我认为可能是他们使用的矢量绘图,能够紧凑下方在其他lib.found 这里


7
@ MAY3AM很抱歉,没有在Eclipse上尝试过。认为eclipse已经过时了,为什么您要使用它。
Ajinkya

6
最终解决我问题的是@wonglik的答案,设置为:buildToolsVersion“ 23.0.2”。
2016年

1
切记在xml中使用app:srcCompat而不是android:src在<21个设备上使用矢量可绘制对象。
Timo

1
这对我不起作用。我的配置如下:buildToolsVersion“ 23.0.2”; classpath'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
艾伦·沃克

6
此解决方案不适用于我。Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard

28

您也可以升级到23.4.0

dependencies {
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
}

并使用标记手动启用此功能:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

在使用向量的活动中。

资料来源:媒介年龄


在一些基本活动中进行的静态调用将为所有正在使用vectorDrawables.useSupportLibrary = true苦苦挣扎的开发人员解决此问题,因此该答案为+1。
Stoycho Andreev

哦,这是一种魔术。我正在使用com.android.support:appcompat-v7:25.3.1在API 19中运行该应用程序。默认配置为,vectorDrawables.useSupportLibrary = true但是在设置带有矢量的ImageSwitcher drawable时会崩溃。最后,通过此静态语句,我可以将setImageResource与vector drawable一起使用。似乎Android SDK既令人惊叹又生动。
少年梅耶

26

请删除appcompat gradle( compile "com.android.support:appcompat-v7:23.2.0")并替换为支持设计(compile 'com.android.support:design:23.1.1'),这将解决问题


这些更改是否也要通过23.1.1 defaultConfig {generateDensities = []} //完成,请使用2.0+ Gradle插件aaptOptions {AdditionalParameters“ --no-version-vectors”}
Ravi

20
但是如果您想使用最新的appcompact库怎么办?
Ajinkya '16

23

在棒棒糖之前的设备上,您需要创建选择器以在ImageView的其他位置使用VectorDrawable

app:srcCompat="@drawable/your_vector_drawable"

选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/your_vector_drawable" />

</selector>

然后,您可以传递此选择器,例如xml中的T​​extView drawableLeft / drawableRight

<TextView
        android:gravity="center_vertical"
        android:drawableLeft="@drawable/selector_your_vector_drawable"
        android:drawableStart="@drawable/selector_your_vector_drawable"
        android:drawableRight="@drawable/selector_your_vector_drawable"
        android:drawableEnd="@drawable/selector_your_vector_drawable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/your_string" />

无论build.gradle中的版本如何,此解决方案都将起作用
PsyGik '16

我在应用程序build.gradle中具有vectorDrawables.useSupportLibrary = true,并且我使用compileSdkVersion 25和buildToolsVersion“ 25.0.0”和依赖库修订版25.0.0,但没有帮助useSupportLibrary,这是最好的解决方案,谢谢@ n1ck !!!
mr.boyfox

这个解决方案在支持库25.00和24上也没有中断,我在Android 4.2.2平板电脑(不支持google play)上进行了测试,并且此解决方案就像魅力一样!
mr.boyfox

到今天[buildtools 25+]都可以使用-xml android:drawable:s引用矢量可绘制对象中的attribs 都没有其他功能。要么是这个,要么以编程方式设置背景可绘制。th!
尼尔斯·阿森(PärNils Amsen),2017年

22

代替ContextCompat.getDrawable,只需使用AppCompatDrawableManager.get()。getDrawable即可

这应该适用于高于23的版本。


1
我正在尝试使用矢量进行自定义视图。这对我有用。但是只能直接AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);通过代码调用。如果由xml声明,则不确定其工作方式。
罗伯特·罗伯特(Robert

1
这种变化本身为我解决了问题。谢谢。
阿尔伯特·c·布劳恩

1
这个固定的问题也是。谢了哥们 !
拉娜

1
您还可以使用:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello

19

使用:

compileSdkVersion 24
buildToolsVersion '24.0.1'

我在运行时崩溃,直到删除了该行

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

从我的应用程序guild.gradle

这似乎使新版本的SDK感到困惑

希望这可以节省别人的头痛


这对我有帮助。
谢尔盖·舒斯蒂科夫

1
删除ectorDrawables.useSupportLibrary可以停止我的4.4.2设备上的崩溃。
阿卡普尔科

哇,真的很有效!但是,为什么会有一个烦人的皮棉错误app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.呢?非常令人困惑!
HendraWD

12

我通过替换解决了这个问题

dependencies {

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

compile 'com.android.support:design:23.2.0'
}

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'

compile 'com.android.support:design:23.0.1'
}

10

上面几种解决方案的组合对我有用。这是我所做的-

从1.3.0版本的Gradle更改为1.5.0 build.gradle项目是这样

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

更新下事情build.gradle应用

buildToolsVersion "23.0.2"

将模块依赖性从23.2.0更新为23.4.0:

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support:animated-vector-drawable:23.4.0'

现在,根据您使用的Gradle版本,使用以下两个代码片段之一。由于我正在使用gradle 1.5.0,因此我使用了它-

defaultConfig {
            generatedDensities = []
            }

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

但是,如果您使用的是Gradle 2.1.0,请改用它

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

然后您就可以开始了。我在xml和程序中都对其进行了测试。在xml文件中,我在ImageView中使用了它-

app:srcCompat="@drawable/anim_droid"
// where droid_anim is an animated-vector file containing set of animations to animate different paths of the SVG file

为了以编程方式做到这一点,我使用了它-

    imageView.setImageResource(R.drawable.anim_droid);
    Drawable drawable = imageView.getDrawable();
    if (drawable instanceof Animatable) {
      ((Animatable) drawable).start();
    }

希望能帮助到你!干杯:)


9

有同样的问题。对我来说,实际上升级构建工具版本有助于:

buildToolsVersion "23.0.2"

9

更新到23.2.0时,请面对api 19上的崩溃问题。我通过将版本更新为23.2.1解决了此问题。(回答此问题时为最新版本。请尝试更新为最新版本,也许google已修复了该问题)

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

1
为什么需要整体编译'com.android.support:support:23.2.1'
IgorGanapolsky'3

目前最新的编译'com.android.support:support-v4:23.3.0'编译'com.android.support:appcompat-v7:23.3.0'编译'com.android.support:design:23.3.0 '
亚历山大

7

确保还使用最新版本buildToolsVersion(如果需要,请从SDK管理器下载)。

样品摇篮:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        ...
        vectorDrawables.useSupportLibrary = true
    }
    dependencies {
        ...
        compile 'com.android.support:appcompat-v7:24.0.0'
        ...
    }
}

3
buildToolsVersion“ 24.0.0”保存我的一天:)
NullPointer

对于谁正在尝试更新以编译sdk 24但在4.x设备上仍然出现错误,这是正确的答案。
fillobotto

4

在Gradle(等级:2.1.0)中:

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

在布局中:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srcCompat="@drawable/you_vector_drawable"/>

3

我遇到了这个问题,但是更新到了build:grade版本:

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

和:

buildToolsVersion "23.0.2"

成功!



2

当我构建应用程序的新版本时,我为这个完全相同的问题感到惊讶。我对appcompact的依赖关系设置为自动更新。

compile 'com.android.support:appcompat-v7:23+'

因此,一旦有新版本可用(在本例中为23.2.0版),它将替换您以前构建的旧版本。

因此,您可以切换回appcompat库的先前版本(快速修复):

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

或者保持当前库版本,并使用Ajinkya的答案(如Google在23.2.0版发行说明中所述)。如果您选择更高版本,请不要忘记将gradle构建工具更新为1.5.0版,否则您将无法使用新参数,例如generatedDensities

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

2

面对相同的问题,此解决方案对其进行了修复。

在你的课上

public class YourClass extends xxx {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
    ...
}

并将其添加到您的gradle文件中(如果尚未添加)。

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

1

我已经通过设置解决了。

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'

尝试过此操作但对我不起作用...使用Android-IDE
Karyuu Ouji 2016年

1

我也遇到了这个问题,我做了什么:改变

compileSdkVersion 24
buildToolsVersion "22.0.1"

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

插入到build.gradle(Module:app)中:

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

dependencies {
    implementation 'com.android.support:appcompat-v7:26.1.0'
}

之后,在您的AppActivity中使用以下代码:

 AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);

在有条件的情况使用的应用程序:srcCompat而不是机器人:SRC安卓:背景,在XML资源文件


0

我遇到了这个问题,但是更新到以下版本对我来说已经解决了:

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

和:

buildToolsVersion "23.0.2"

模块依赖性:

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

compile 'com.google.android.gms:play-services:8.4.0'

0

我通过替换解决了问题

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

compile 'com.android.support:appcompat-v7:23.0.2'
compile 'com.android.support:support-v4:23.0.2'

0

我将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 Manager下载。因此,请buildToolsVersion从SDK Manager 查看最新版本,并查看其是否与依赖项版本匹配。

希望这对某人有帮助。


0

对我来说,有效的方法是从xml vector drawable的命名空间声明中的'https'中删除's'。

该XML来自Google Android文档本身。您可以在屏幕快照中看到xmlns是'http',但是在下面的可复制复制版本中,它是'https'。

这将阻止Vector Asset查看器中的渲染错误,但是由于我不知道的原因,您仍然看不到任何内容。应该看起来像扳手。

如果右键单击drawables文件夹,然后单击“新建->矢量资产”,您将获得一个有效的android图标资产。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>

我的设计和appcompat-v7都使用23.2.1和buildToolsVersion 23.0.2。

这就是“材料图标”界面文件->新建->矢量资产->材料图标(然后单击图标并选择扳手)生成的扳手:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/>
</vector>

这个在线实用程序对我没问题。使用Chrome。它将SVG转换为android矢量可绘制对象。


0

问题是:

/VdcInflateDelegate: Exception while inflating <vector>

解:

改变compileSdkVersion 23 buildToolsVersion "23.0.2"compileSdkVersion 24 buildToolsVersion "24.0.2"

解决方案代码:

compileSdkVersion 24
buildToolsVersion '24.0.1'

使用上面的代码,我解决了问题


0

只需在build.gradle中添加以下依赖项即可。这将解决您的问题。我正在使用25.0.2 buildToolsVersion。

编译'com.android.support:support-vector-drawable:25.3.0'


0

我将FragmentActivity更改为AppCompatActivity,问题已解决。我的环境是:

compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"

0

就我而言,解决方案有效:

android:theme="@style/TextLabelWhite"

就像在您的xml中一样。将样式父级更改为您的AppTheme样式,例如:

<style name="TextLabelWhite" parent="AppTheme">

0

即使我在gradle中启用了对vector的支持,并且具有gradle的最新版本,构建工具,支持库和Android Studio,我仍然遇到错误。

这是我的情况的解决方法:

AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);

阻止皮棉警告添加此 @SuppressLint("RestrictedApi")


0

尝试使用:编译'com.android.support:design:23.1.1'

代替:编译“ com.android.support:appcompat-v7:23.2.0”


0

还在buildToolsVersion '26 .0.2'观察到

降级buildToolsVersion '25 .0.3'正常工作

对于buildToolsVersion '26 .0.2':尝试对窗口小部件使用AppCompat示例:TextView- > android.support.v7.widget.AppCompatTextView (对于较早的Android版本支持)在低端设备上由于内存而无法使可绘制对象膨胀时,也会在低端设备上观察到短缺。(即使drawable存在于res-> drawable目录中):尝试用不太复杂的对象更改您的drawable

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.