Atualize a biblioteca de suporte do Android para 23.2.0 causar erro: XmlPullParserException arquivo XML binário linha # 17 <vector> tag requer viewportWidth> 0


87

Tento atualizar minha Biblioteca de Suporte para 23.2.0 e encontro este erro:

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)

E

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)

Minhas 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>

Como posso corrigir isso?



30
Estou começando a desistir do desenvolvimento do Android como um & ** & # $ todo! Não posso acreditar que tenho perdido muito da minha vida como indivíduo atualizando para uma nova versão do SDK para corrigir o bug que eles introduziram na versão anterior e agora isso! ARRGGGGHHH!
Neon Warge

1
Eu me conformei com a API v23.1.0: P
Neon Warge

4
tendo mesmo problema 24.0.0se alguem tiver dicas sobre isso, por favor, compartilhe, eu realmente tentei de tudo.
wviana

1
@NeonWarge ... Já andei por aí algumas vezes. Essas respostas não fazem nada por mim. Tenho certeza de que estou começando a sentir dor
Jan Jansz

Respostas:


54

Use este código em seu arquivo build.gradle

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

Se você estiver usando Gradle 1.5, em vez disso usará

defaultConfig {
        generatedDensities = []
    }

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

Eu acho que pode ser que eles estejam usando um compacto capaz de desenhar vetor embaixo em outro lib. Encontrado aqui


7
@ MAY3AM, desculpe não tentei no Eclipse. Pensei que o Eclipse está desatualizado, por que você está usando.
Ajinkya

6
O que finalmente resolveu meu problema foi a resposta de @wonglik, definir: buildToolsVersion "23.0.2".
Sid

1
Lembre-se de usar app: srcCompat em vez de android: src no xml para usar os drawables vetoriais em <21 dispositivos.
Timo

1
isso não funciona para mim. minha configuração é a seguinte: buildToolsVersion "23.0.2"; classpath 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork

6
Esta solução não funciona para mim. Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard

28

Você também pode atualizar para 23.4.0

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

e use um sinalizador para habilitar manualmente essa funcionalidade:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

dentro da atividade que usa os vetores.

Fonte: Idade dos vetores


a chamada estática dentro de alguma atividade base corrigirá o problema para todos os desenvolvedores que estão lutando com vectorDrawables.useSupportLibrary = true, então +1 para esta resposta.
Stoycho Andreev

Oh, ♫ é uma espécie de mágica ♫. Estou usando com.android.support:appcompat-v7:25.3.1o aplicativo na API 19. A configuração padrão é, vectorDrawables.useSupportLibrary = truemas estava travando ao definir o drawable ImageSwitcher com um vetor. Finalmente, com essa instrução estática, posso setImageResource com o drawable vetorial. Parece que o Android SDK é incrível e imaturo.
Junior Mayhé

26

Remova o gradle appcompat ( compile "com.android.support:appcompat-v7:23.2.0") e substitua pelo design de suporte ( compile 'com.android.support:design:23.1.1'). Isso resolverá o problema


Essas alterações também devem ser feitas com 23.1.1 defaultConfig {generatedDensities = []} // Isso é tratado para você pelo plug-in 2.0+ Gradle aaptOptions {additionalParameters "--no-version-Vectors"}
Ravi

20
mas e se você quiser usar a biblioteca appcompact mais recente ??
Ajinkya

23

Em dispositivos pré-pirulito, você precisa criar um seletor para usar VectorDrawable em outro lugar de ImageView

app:srcCompat="@drawable/your_vector_drawable"

Seletor:

<?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>

Então você pode passar este seletor, por exemplo, para TextView drawableLeft / drawableRight em 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" />

Independentemente das versões em build.gradle, esta solução funcionará
PsyGik

Eu tenho vectorDrawables.useSupportLibrary = true no app build.gradle e uso compileSdkVersion 25 e buildToolsVersion "25.0.0" e revisões de bibliotecas de dependência 25.0.0, mas não ajudou a usarSupportLibrary, esta é a melhor solução, obrigado @ n1ck !!!
Sr.boyfox,

Esta solução não quebra na biblioteca de suporte 25.00 e 24 também, testei no tablet Android 4.2.2 (não suporta google play) e essa solução funciona perfeitamente!
sr.boyfox

Isso funciona a partir de hoje [buildtools 25+] - nada mais funciona para android:drawableatribs em xml: s referenciando drawables vetoriais. É isso ou definir o drawable de fundo programaticamente. Wth!
Pär Nils Amsen

22

Em vez de ContextCompat.getDrawable , apenas use AppCompatDrawableManager.get (). GetDrawable .

Isso deve funcionar em versões superiores a 23. +


1
Estou tentando usar o vetor para visualização personalizada. Isso funciona para mim. Mas só ligue diretamente AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);por código. Não tenho certeza de como funciona se declarado por xml.
Robert

1
essa mudança por si só resolveu o problema para mim. obrigado.
albert c braun

1
Isso também corrigiu meu problema. Obrigado cara!
rana

1
Você também pode usar:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello de

19

Usando:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Eu bati em tempo de execução até remover a linha

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

do meu aplicativo guild.gradle

Isso parece confundir a versão mais recente do SDK

Espero que isso evite a dor de cabeça de outra pessoa


Isso me ajuda.
Sergey Shustikov,

1
Remover o ectorDrawables.useSupportLibrary interrompeu as falhas no meu dispositivo 4.4.2.
Acapulco

Uau, realmente funciona! Mas por que há um erro chato de lint com app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.? É muito confuso!
HendraWD

12

Corrigi este problema substituindo

dependencies {

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

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

com

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

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

10

Uma mistura de algumas das soluções acima funcionou para mim. Aqui está o que eu fiz -

Alterar versão Gradle de 1.3.0 para 1.5.0 no build.gradlede projeto como este

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

Atualização abaixo as coisas em build.gradlede aplicativo

buildToolsVersion "23.0.2"

Dependências do módulo atualizadas de 23.2.0 para 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'

Agora, dependendo da versão do Gradle que você está usando, use um dos dois trechos a seguir. Como estou usando o gradle 1.5.0, usei este -

defaultConfig {
            generatedDensities = []
            }

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

Mas se você estiver usando o Gradle 2.1.0, use isso

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

E então você está pronto para ir. Eu testei tanto em xml quanto programaticamente. No arquivo xml, usei isso no meu 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

E para fazer isso programaticamente, usei este -

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

Espero que ajude! Felicidades :)


9

Tive o mesmo problema. Para mim, atualizar a versão das ferramentas de construção ajudou:

buildToolsVersion "23.0.2"

9

Enfrente o problema de travamento na API 19 ao atualizar para 23.2.0. Resolvi este problema atualizando a versão para 23.2.1. (A versão mais recente quando responder a esta pergunta. Tente atualizar para a mais recente, talvez o Google tenha corrigido)

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

1
Por que você precisa compilar o todo 'com.android.support:support:23.2.1'?
IgorGanapolsky

O mais recente no momento 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 '
Alexandr

7

Certifique-se de usar o mais recente buildToolsVersiontambém (baixe do gerenciador do SDK, se necessário).

Amostra de 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" salve meu dia :)
NullPointer

Esta é a resposta correta para quem está tentando atualizar para compilar o SDK 24, mas ainda está recebendo erros em dispositivos 4.x.
fillobotto

4

No Gradle (gradle: 2.1.0):

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

No layout:

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

3

Eu tive esse problema, mas atualizando para as versões build: grade:

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

E:

buildToolsVersion "23.0.2"

Sucesso!



2

Fiquei surpreso com esse mesmo problema quando criei uma nova versão do meu aplicativo. Minha dependência do appcompact foi configurada para atualização automática.

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

Portanto, assim que uma nova versão estiver disponível (neste caso, a versão 23.2.0), ela substituirá a antiga com a qual você estava compilando.

Portanto, você pode voltar para a versão anterior da biblioteca appcompat (correção rápida):

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

Ou mantenha a versão atual da biblioteca e use a resposta de Ajinkya conforme explicado pelo google na nota de lançamento da versão 23.2.0 . Se você optar pelo último, não se esqueça de atualizar sua ferramenta de compilação do Gradle para a versão 1.5.0 ou você não poderá usar os novos parâmetros como generatedDensities:

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

2

Enfrentando o mesmo problema, esta solução o corrigiu.

Na sua aula apenas faça

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

e também adicione isso ao seu arquivo Gradle, se ainda não.

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

1

Eu consertei definindo ..

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

Tentei isso, mas não funcionou para mim ... Usando Android-IDE
Karyuu Ouji

1

Eu encontrei esse problema também, o que eu fiz: mudar

compileSdkVersion 24
buildToolsVersion "22.0.1"

para

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

Insira em build.gradle (Módulo: app):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

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

Depois, use o código abaixo, em sua AppActivity:

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

Quando disponível, use o app: srcCompat em vez de android: src e android: background , no arquivo de recurso XML


0

Eu tive esse problema, mas atualizar para as versões abaixo corrigiu para mim:

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

E:

buildToolsVersion "23.0.2"

Dependências do módulo:

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

Eu resolvi o problema substituindo

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

com

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

0

Recebi o mesmo erro no Android Studio 2.2 depois de atualizar minhas dependências do Gradle para as versões mais recentes, mas esqueci de atualizar o buildToolsVersion do meu projeto.

Eu mudei:

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

para:

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

Enquanto buildToolsVersion permaneceu "22.0.1"assim:

buildToolsVersion "22.0.1"

Então, tudo que fiz foi atualizar o buildToolsVersion para 24 assim:

buildToolsVersion "24"

uma vez que foi baixado anteriormente com SDK Manager. Portanto, verifique o mais recente buildToolsVersionno SDK Manager e veja se ele corresponde à versão das dependências.

Espero que isso ajude alguém.


0

Para mim, o que funcionou ... foi remover o 's' de 'https' na declaração de namespace do meu drawable vetorial xml.

Esse XML veio da própria documentação do Google Android. Você pode ver na captura de tela que o xmlns é 'http', mas na versão que pode ser copiada abaixo, é 'https'.

Isso interromperá os erros de renderização no visualizador do Vector Asset, mas você ainda não verá nada, por motivos que não entendi. Deve parecer uma chave inglesa.

Se você clicar com o botão direito do mouse na pasta drawables e "New -> Vector Asset", obterá um ícone de ativo Android que funciona.

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

Tanto meu design quanto meu appcompat-v7 usam 23.2.1 e buildToolsVersion 23.0.2.

A chave inglesa gerada pelo arquivo de interface de 'ícones de material' -> novo -> ativo de vetor -> ícone de material (clique no ícone e selecione a chave inglesa) é:

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

Este utilitário online foi bom para mim. Use o Chrome. Ele converte SVG em drawables vetoriais Android.


0

o problema era:

/VdcInflateDelegate: Exception while inflating <vector>

solução:

mudou compileSdkVersion 23 buildToolsVersion "23.0.2" paracompileSdkVersion 24 buildToolsVersion "24.0.2"

código da solução:

compileSdkVersion 24
buildToolsVersion '24.0.1'

usando este código acima eu resolvi o problema


0

Basta adicionar a seguinte dependência em seu build.gradle. isso vai resolver o seu problema. estou a usar 25.0.2 buildToolsVersion.

compilar 'com.android.support:support-vector-drawable:25.3.0'


0

Mudei FragmentActivity para AppCompatActivity, o problema está resolvido. Meu ambiente é:

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

0

No meu caso, essa solução funcionou:

Usar

android:theme="@style/TextLabelWhite"

assim como em seu xml. Altere o estilo pai para o seu estilo AppTheme, como:

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

0

Embora eu tenha o suporte para vetor habilitado no meu gradle e tenha a versão mais recente do gradle, ferramentas de compilação, biblioteca de suporte e Android Studio, ainda recebo o erro.

Aqui está uma solução para o meu caso:

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

para suprimir o aviso do lint, adicione este @SuppressLint("RestrictedApi")


0

tente usar: compile 'com.android.support:design:23.1.1'

em vez de: compilar "com.android.support:appcompat-v7:23.2.0"


0

Também observado em buildToolsVersion '26 .0.2 '

O downgrade para buildToolsVersion '25 .0.3 'funcionou .

Para buildToolsVersion '26 .0.2 ': experimente AppCompat para Widgets Exemplo: TextView -> android.support.v7.widget.AppCompatTextView (para suporte a versão mais antiga do Android) Também observado em dispositivos de última geração quando o dispositivo não consegue inflar drawables devido à memória falta. (Mesmo que o drawable exista em seu diretório res-> drawable): Tente alterar seu drawable por outros menos complexos .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.