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
나는 & ** & # $ 전체로서 안드로이드 개발을 포기하기 시작했습니다! 이전 버전에서 소개 한 버그를 수정하기 위해 하나의 새 SDK 버전으로 업그레이드하는 개인으로서 내 인생의 많은 시간을 낭비하고 있다는 것을 믿을 수 없습니다. ARRGGGGHHH!
네온 Warge

1
나는 API v23.1.0 : P
Neon Warge를 결정

4
24.0.0누군가가 그것에 대한 팁이 있으면 같은 문제가 있으면 공유하십시오. 나는 모든 것을 정말로 시도했습니다.
wviana

1
@NeonWarge ... 나는 지금 블록 주위에 몇 번 있었다. 이 답변은 나를 위해 아무것도하지 않습니다. 반드시 고통을 느끼기 시작하고
월 Jansz

답변:


55

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에서 벡터 드로어 블 콤팩트를 사용하고 있다고 생각 합니다.


7
@ MAY3AM 미안하지만 Eclipse에서 시도하지 않았습니다. eclipse가 왜 그것을 사용하고 있는지 구식입니다.
Ajinkya

6
마침내 내 문제를 해결 한 것은 @wonglik의 대답으로 buildToolsVersion "23.0.2"입니다.
Sid

1
21 미만의 기기에서 벡터 드로어 블을 사용하려면 xml에서 android : src 대신 app : srcCompat를 사용해야합니다.
Timo

1
이것은 나를 위해 작동하지 않습니다. 내 구성은 다음과 같습니다. buildToolsVersion "23.0.2"; classpath 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork

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.1API 19에서 앱 을 실행하고 있습니다. 기본 구성은 vectorDrawables.useSupportLibrary = true있지만 ImageSwitcher 드로어 블을 벡터로 설정할 때 충돌이 발생했습니다. 마지막으로이 정적 문을 사용하여 벡터 드로어 블로 setImageResource를 설정할 수 있습니다. Android SDK는 놀랍고 미숙 한 것 같습니다.
Junior Mayhé 2011

26

appcompat gradle ( compile "com.android.support:appcompat-v7:23.2.0")을 제거하고 지원 디자인 ( compile 'com.android.support:design:23.1.1')으로 교체 하면 문제가 해결됩니다.


이러한 변경 사항은 23.1.1 defaultConfig {generatedDensities = []}에서도 수행됩니까? // 2.0+ Gradle 플러그인 aaptOptions {additionalParameters "--no-version-vectors"}
Ravi

20
하지만 최신 appcompact 라이브러리를 사용하려면 어떻게해야합니까 ??
Ajinkya

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의 TextView 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

앱 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+] android:drawable에서 작동합니다 . 벡터 드로어 블을 참조하는 xml : s의 속성에 대해 다른 것은 작동하지 않습니다 . 이것은 프로그래밍 방식으로 배경 드로어 블을 설정하거나 설정하는 것입니다. Wth!
Pär Nils Amsen

22

대신 ContextCompat.getDrawable 바로 사용 AppCompatDrawableManager.get (). getDrawable을 .

이것은 23 이상 버전에서 작동합니다.


1
사용자 지정보기에 벡터를 사용하려고합니다. 이것은 나를 위해 작동합니다. 그러나 AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);코드로 직접 호출하십시오 . xml에 의해 선언 된 경우 어떻게 작동하는지 확실하지 않습니다.
로버트

1
이 변화는 저에게 문제를 해결했습니다. 감사합니다.
알버트 C의 브라운

1
이것은 엄마 문제도 해결했습니다. 고마워 친구!
rana

1
또한 다음을 사용할 수 있습니다.AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello

19

사용 :

compileSdkVersion 24
buildToolsVersion '24.0.1'

라인을 제거 할 때까지 런타임에 충돌했습니다.

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

내 응용 프로그램 guild.gradle에서

최신 버전의 SDK를 혼동하는 것 같습니다.

이것이 다른 사람의 두통을 덜어주기를 바랍니다.


이것은 저에게 도움이됩니다.
Sergey Shustikov 2016 년

1
ectorDrawables.useSupportLibrary를 제거하면 4.4.2 장치에서 충돌이 중지되었습니다.
Acapulco

와, 정말 작동합니다! 그러나 왜 성가신 린트 오류가 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.5.0 1.3.0에서 Gradle을 버전 변경 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

현재 최신 버전은 'com.android.support:support-v4:23.3.0'컴파일 'com.android.support:appcompat-v7:23.3.0'컴파일 'com.android.support:design:23.3.0'입니다. '
Alexandr

7

최신 버전을 사용하십시오. buildToolsVersion 도 (필요한 경우 SDK 관리자에서 다운로드).

샘플 Gradle :

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에서 (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'

또는 현재 라이브러리 버전을 유지하고 버전 23.2.0 릴리스 노트에서 Google이 설명한대로 Ajinkya 의 답변을 사용 합니다 . 나중을 선택하는 경우 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'

이 시도하지만 안드로이드-IDE를 사용하여 ... 나를 위해 일을하지 않았다
Karyuu Ouji을

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);

가능한 경우 XML 리소스 파일 에서 app : srcCompat 대신 android : srcandroid : background를 사용 하십시오.


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로 다운로드했기 때문입니다. 따라서 buildToolsVersionSDK Manager 에서 최신 버전 을 확인하고 종속성 버전과 일치하는지 확인하십시오.

이것이 누군가를 돕기를 바랍니다.


0

나를 위해 일한 것은 ... 내 xml 벡터 드로어 블의 네임 스페이스 선언에서 'https'에서 's'를 제거하는 것입니다.

이 XML은 Google Android 문서 자체에서 가져 왔습니다. 스크린 샷에서 xmlns가 'http'인 것을 볼 수 있지만 아래 복사-붙여 넣기 가능한 버전에서는 'https'입니다.

이렇게하면 Vector Asset 뷰어에서 렌더링 오류가 중지되지만 알 수없는 이유로 아무것도 볼 수 없습니다. 렌치처럼 보여야합니다.

드로어 블 폴더를 마우스 오른쪽 버튼으로 클릭하고 "New-> Vector Asset"을 클릭하면 작동하는 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를 안드로이드 벡터 드로어 블로 변환합니다.


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에서 벡터 지원이 활성화되어 있고 최신 버전의 gradle, 빌드 도구, 지원 라이브러리 및 Android 스튜디오가 있지만 여전히 오류가 발생합니다.

내 경우에 대한 수정 사항은 다음과 같습니다.

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 버전 지원의 경우) 기기가 메모리로 인해 드로어 블을 확장 할 수없는 경우 저사양 기기에서도 관찰됩니다. (드로어 블이 res-> drawable dir에 존재하더라도) : 덜 복잡한 것으로 드로어 블을 변경해보십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.