Обновите библиотеку поддержки Android до версии 23.2.0. Причина ошибки: XmlPullParserException Binary XML file line # 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 05

1
Я остановился на API v23.1.0: P
Neon Warge

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"
    }

Я думаю, может быть, они используют векторный компактный рисунок внизу в другой библиотеке. Найденный здесь


7
@ MAY3AM, извините, не пробовал на Eclipse. Думаю, что eclipse устарело, почему вы его используете.
Ajinkya 03

6
Наконец, моя проблема была решена с помощью ответа @wonglik: buildToolsVersion "23.0.2".
Сид,

1
Не забудьте использовать app: srcCompat вместо android: src в xml, чтобы использовать векторные чертежи на <21 устройстве.
Timo

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 07

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") и замените на support design ( compile 'com.android.support:design:23.1.1'), это решит проблему.


Эти изменения также должны быть сделаны с помощью 23.1.1 defaultConfig {generatedDensities = []} // Это обрабатывается за вас плагином Gradle 2.0+ aaptOptions {additionalParameters "--no-version-vectors"}
Рави

20
но что, если вы хотите использовать последнюю версию библиотеки appcompact ??
Ajinkya

23

На устройствах pre-lollipop вам необходимо создать селектор для использования 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, но мне не помогло использованиеSupportLibrary, это лучшее решение, спасибо @ n1ck !!!
mr.boyfox

Это решение не ломается и в библиотеке поддержки 25.00 и 24, я тестировал на планшете Android 4.2.2 (не поддерживает Google Play), и это решение работает как шарм!
mr.boyfox

Это работает на сегодняшний день [buildtools 25+] - больше ничего не работает для android:drawableатрибутов в xml: s, ссылающихся на векторные чертежи. Это либо это, либо установка фона, который можно рисовать программно. Wth!
Пяр Нильс Амсен, 09

22

Вместо ContextCompat.getDrawable просто используйте AppCompatDrawableManager.get (). GetDrawable .

Это должно работать на версиях выше 23. +


1
Я пытаюсь использовать вектор для пользовательского просмотра. У меня это работает. Но только напрямую AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);по коду. Не уверен, как это работает, если объявлено xml.
Роберт

1
это изменение само по себе устранило проблему для меня. Спасибо.
Альберт Браун

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.
Акапулько,

Вау, это действительно работает! Но почему возникает досадная ошибка lint с 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'?
Игорь Ганапольский

Последний на данный момент compile 'com.android.support:support-v4:23.3.0' compile 'com.android.support:appcompat-v7:23.3.0' compile '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 01

1

Я тоже столкнулся с этой проблемой, что сделал: изменить

compileSdkVersion 24
buildToolsVersion "22.0.1"

к

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

Вставить в build.gradle (Модуль: приложение):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

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

После этого используйте приведенный ниже код в AppActivity:

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

По возможности используйте app: 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 Manager и посмотрите, соответствует ли она версии зависимостей.

Надеюсь, это кому-то поможет.


0

Для меня то, что сработало ... было удалением 's' из 'https' в объявлении пространства имен моего вектора xml drawable.

Этот XML взят из самой документации Google Android. На скриншоте видно, что xmlns - это http, но в копируемой версии ниже это https.

Это остановит ошибки рендеринга в средстве просмотра векторных активов, но вы по-прежнему ничего не увидите по причинам, которых я не понимаю. Это должно быть похоже на гаечный ключ.

Если вы щелкните правой кнопкой мыши папку чертежей и выберите «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 в векторные чертежи 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 и у меня есть последняя версия gradle, инструменты сборки, библиотека поддержки и студия Android, я все равно получаю ошибку.

Вот исправление для моего случая:

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

чтобы подавить предупреждение о ворсинах, добавьте это @SuppressLint("RestrictedApi")


0

попробуйте использовать: compile '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 на менее сложные .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.