Оновіть бібліотеку підтримки 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!
Neon Warge

1
Я погодився на API v23.1.0: P
Neon Warge 05.03.16

4
маючи ту саму проблему, 24.0.0якщо хтось має поради щодо цього, будь ласка, поділіться нею, я дійсно пробував кожну річ.
wviana

1
@NeonWarge ... Я вже кілька разів був біля кварталу. Ці відповіді для мене нічого не роблять. Я впевнений, що починаю відчувати біль
Ян Янш,

Відповіді:


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.found тут


7
@ MAY3AM вибачте, не пробували Eclipse.Toughght eclipse застарів, чому ви його використовуєте.
Ajinkya 03.03.16

6
Що нарешті вирішило мою проблему, так це відповідь @ wonglik на set: buildToolsVersion "23.0.2".
Сід

1
Не забувайте використовувати app: srcCompat замість android: src у xml, щоб використовувати векторні малюнки на <21 пристроях.
Тимо

1
це не працює для мене. моя конфігурація наведена нижче: buildToolsVersion "23.0.2"; шлях до класу '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 для цієї відповіді.
Стойчо Андрєєв

О, ♫ це якась магія ♫. Я використовую com.android.support:appcompat-v7:25.3.1запуск програми в API 19. За замовчуванням vectorDrawables.useSupportLibrary = trueналаштовано конфігурацію, але вона зазнала збою при встановленні ImageSwitcher, який можна розтягнути вектором. Нарешті, за допомогою цього статичного висловлювання я можу встановитиImageResource з векторним малюнком. Здається, Android SDK - це і дивовижно, і незряче.
Junior Mayhé

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"}
Раві,

20
але що, якщо ви хочете використовувати найновішу бібліотеку appcompact ??
Ajinkya

23

На пристроях перед льодяником потрібно створити селектор, щоб використовувати VectorDrawable в іншому місці з ImageView

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>

Потім ви можете передати цей селектор, наприклад, для TextView drawableLeft / drawableRight у xml

<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

У мене є vectorDrawables.useSupportLibrary = true в додатку build.gradle, і я використовую 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
ця зміна сама по собі вирішила проблему для мене. Дякую.
albert c braun

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

Сподіваюся, це рятує когось іншого головний біль


Це мені допомагає.
Сергій Шустіков

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

Для мене спрацювала суміш кількох із наведених вище рішень. Ось що я зробив -

Зміна Gradle версії від 1.3.0 до 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

Зіткнутися з проблемою збою в api 19 під час оновлення до 23.2.0. Я вирішив цю проблему, оновивши версію до 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'?
Ігор Ганапольський

Остання на даний момент компіляція '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, якщо це потрібно).

Зразок 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'

Або збережіть поточну версію бібліотеки та скористайтеся відповіддю 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

1

Я теж зіткнувся з цією проблемою, і те, що я зробив: зміни

compileSdkVersion 24
buildToolsVersion "22.0.1"

до

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

Вставити в build.gradle (модуль: 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 замість android: src та android: background , у файлі 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

Я отримав цю саму помилку в Android Studio 2.2 після того, як оновив залежності Gradle до останніх версій, але забув оновити buildToolsVersion свого проекту.

Я змінився:

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 і чи відповідає вона версії залежностей.

Сподіваюся, це комусь допомагає.


0

Для мене те, що спрацювало ..., було видалення символів s з https у оголошенні простору імен мого вектора, який можна малювати.

Цей XML походить із самої документації Google Android. На скріншоті ви можете побачити, що xmlns є "http", але в копіюваній версії нижче, це "https".

Це зупинить помилки візуалізації у засобі перегляду 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): Спробуйте змінити ваш drawable на менш складні .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.