Perbarui Android Support Library ke 23.2.0 menyebabkan error: XmlPullParserException Binary XML file line # 17 <vector> tag memerlukan viewportWidth> 0

87

Saya mencoba memperbarui Perpustakaan Dukungan saya hingga 23.2.0 dan menghadapi kesalahan ini:

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)

Dan

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)

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

Bagaimana cara memperbaikinya?

mr.icetea
sumber
30
Saya mulai menghentikan pengembangan android sebagai & ** & # $ secara keseluruhan! Tidak percaya saya telah menyia-nyiakan banyak hidup saya sebagai individu yang mengupgrade ke satu versi SDK baru untuk memperbaiki bug yang mereka perkenalkan pada versi sebelumnya dan sekarang ini! ARRGGGGHHH!
Neon Warge
1
Saya memilih API v23.1.0: P
Neon Warge
4
mengalami masalah yang sama 24.0.0jika seseorang memiliki tip tentangnya, silakan bagikan, saya benar-benar mencoba semuanya.
wviana
1
@NeonWarge ... Saya sudah berkeliling blok beberapa kali sekarang. Jawaban ini tidak melakukan apa-apa untuk saya. Saya yakin mulai merasakan sakit
Jan Jansz

Jawaban:

55

Gunakan kode ini di file build.gradle Anda

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

Jika Anda menggunakan Gradle 1.5, Anda akan menggunakan

defaultConfig {
        generatedDensities = []
    }

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

Saya pikir mungkin mereka menggunakan vektor draw-mampu kompak di bawahnya di lib.found lain ditemukan di sini

Ajinkya
sumber
7
@ MAY3AM maaf belum mencoba di Eclipse. Pikir gerhana sudah usang mengapa kamu menggunakannya.
Ajinkya
6
Apa yang akhirnya memecahkan masalah saya adalah jawaban @ wonglik, untuk mengatur: buildToolsVersion "23.0.2".
Sid
1
Ingatlah untuk menggunakan app: srcCompat, bukan android: src di xml untuk menggunakan sumber daya dapat digambar vektor di <21 perangkat.
Timo
1
ini tidak bekerja untuk saya. konfigurasi saya adalah sebagai berikut: buildToolsVersion "23.0.2"; classpath 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork
6
Solusi ini tidak berhasil untuk saya. Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard
28

Anda juga dapat meningkatkan ke 23.4.0

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

dan gunakan tanda untuk mengaktifkan fungsionalitas ini secara manual:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

di dalam aktivitas yang menggunakan vektor.

Sumber: Umur vektor

iCantSeeSharp
sumber
panggilan statis di dalam beberapa aktivitas dasar akan memperbaiki masalah untuk semua pengembang yang berjuang dengan vectorDrawables.useSupportLibrary = true, jadi +1 untuk jawaban ini.
Stoycho Andreev
Oh, ♫ itu semacam keajaiban ♫. saya menggunakancom.android.support:appcompat-v7:25.3.1 menjalankan aplikasi di API 19. Konfigurasi default adalah vectorDrawables.useSupportLibrary = truetetapi macet saat mengatur drawable ImageSwitcher dengan vektor. Akhirnya dengan pernyataan statis ini, saya bisa setImageResource dengan vector drawable. Tampaknya SDK Android luar biasa dan belum dewasa.
Junior Mayhé
26

Harap hapus appcompat gradle ( compile "com.android.support:appcompat-v7:23.2.0") dan ganti dengan desain dukungan ( compile 'com.android.support:design:23.1.1') ini akan menyelesaikan masalah

Abhilash
sumber
Apakah perubahan ini juga harus dilakukan dengan 23.1.1 defaultConfig {generatedDensities = []} // Ini ditangani untuk Anda oleh 2.0+ Gradle Plugin aaptOptions {additionalParameters "--no-version-vektor"}
Ravi
20
tetapi bagaimana jika Anda ingin menggunakan pustaka appcompact terbaru ??
Ajinkya
23

Pada perangkat pra-lollipop, Anda perlu membuat selektor untuk menggunakan VectorDrawable di tempat lain dari ImageView

app:srcCompat="@drawable/your_vector_drawable"

Pemilih:

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

Kemudian Anda dapat meneruskan pemilih ini, misalnya untuk TextView drawableLeft / drawableRight dalam 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" />
Nikita Axyonov
sumber
Terlepas dari versi di build.gradle, solusi ini akan berfungsi
PsyGik
Saya memiliki vectorDrawables.useSupportLibrary = true di app build.gradle dan saya menggunakan compileSdkVersion 25 dan buildToolsVersion "25.0.0" dan revisi perpustakaan ketergantungan 25.0.0 tetapi tidak membantu useSupportLibrary, ini adalah solusi terbaik terima kasih @ n1ck !!!
mr.boyfox
Solusi ini tidak rusak pada pustaka dukungan 25.00 dan 24 juga, saya menguji pada tablet Android 4.2.2 (tidak mendukung google play) dan solusi ini bekerja seperti pesona!
mr.boyfox
Ini berfungsi mulai hari ini [buildtools 25+] - tidak ada lagi yang berfungsi untuk android:drawableatribut di xml: s yang mereferensikan vector drawable. Entah ini atau menyetel latar belakang drawable secara terprogram. Wth!
Pär Nils Amsen
22

Sebagai ganti ContextCompat.getDrawable , cukup gunakan AppCompatDrawableManager.get (). GetDrawable .

Ini harus bekerja pada versi yang lebih tinggi dari 23. +

Ivelius
sumber
1
Saya mencoba menggunakan vektor untuk tampilan kustom. Ini berhasil untuk saya. Tetapi hanya langsung menelepon AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);dengan kode. Tidak yakin bagaimana cara kerjanya jika dideklarasikan oleh xml.
Robert
1
perubahan ini dengan sendirinya memperbaiki masalah bagi saya. Terima kasih.
albert c braun
1
Masalah ma tetap ini juga. Terima kasih sobat!
rana
1
Anda juga dapat menggunakan:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello
19

Menggunakan:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Saya jatuh pada saat run time sampai saya menghapus garis

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

dari aplikasi guild.gradle saya

Ini tampaknya membingungkan versi SDK yang lebih baru

Semoga ini bisa menyelamatkan sakit kepala orang lain

Mark Z. Kumler
sumber
Ini membantu saya.
Sergey Shustikov
1
Menghapus ectorDrawables.useSupportLibrary menghentikan crash pada perangkat 4.4.2 saya.
Acapulco
Wow, ini benar-benar berhasil! Tetapi mengapa ada kesalahan lint yang mengganggu app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.? Sangat membingungkan!
HendraWD
12

Saya memperbaiki masalah ini dengan mengganti

dependencies {

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

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

dengan

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

compile 'com.android.support:design:23.0.1'
}
Abhijeet Mallick
sumber
10

Campuran dari beberapa solusi di atas berhasil untuk saya. Inilah yang saya lakukan -

Ubah versi Gradle dari 1.3.0 ke 1.5.0 di build.gradledari proyek seperti ini

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

Perbarui bawah hal-hal di build.gradledari aplikasi

buildToolsVersion "23.0.2"

Dependensi Modul yang diperbarui dari 23.2.0 hingga 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'

Sekarang tergantung pada versi gradle yang Anda gunakan, gunakan salah satu dari dua cuplikan berikut. Karena saya menggunakan gradle 1.5.0, saya menggunakan ini -

defaultConfig {
            generatedDensities = []
            }

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

Tetapi jika Anda menggunakan Gradle 2.1.0, gunakan ini sebagai gantinya

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

Dan kemudian Anda siap untuk pergi. Saya mengujinya baik dalam xml maupun secara terprogram. Dalam file xml, saya menggunakan ini di ImageView saya -

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

Dan untuk melakukannya secara terprogram, saya menggunakan ini -

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

Semoga membantu! Bersulang :)

Shubhral
sumber
9

Punya masalah yang sama. Bagi saya, sebenarnya meningkatkan versi Alat build membantu:

buildToolsVersion "23.0.2"
wonglik
sumber
9

Hadapi masalah crash pada api 19 saat memperbarui ke 23.2.0. Saya memecahkan masalah ini dengan memperbarui versi ke 23.2.1. (Versi terbaru saat menjawab pertanyaan ini. Coba perbarui ke yang terbaru, mungkin google telah memperbaikinya)

compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support:23.2.1'.
tiegeda
sumber
1
Mengapa Anda perlu mengkompilasi keseluruhan 'com.android.support:support:23.2.1'?
IgorGanapolsky
Yang terbaru untuk saat ini mengkompilasi '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

Pastikan Anda menggunakan yang terbaru buildToolsVersion juga (Unduh dari pengelola SDK jika perlu).

Gradle Sampel:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        ...
        vectorDrawables.useSupportLibrary = true
    }
    dependencies {
        ...
        compile 'com.android.support:appcompat-v7:24.0.0'
        ...
    }
}
Banyak Melimpah
sumber
3
buildToolsVersion "24.0.0" menyelamatkan hari saya :)
NullPointer
Ini adalah jawaban yang benar untuk siapa yang mencoba memperbarui untuk mengkompilasi sdk 24 tetapi masih mendapatkan kesalahan pada perangkat 4.x.
fillobotto
4

Di Gradle (gradle: 2.1.0):

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

Dalam tata letak:

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

Saya mengalami masalah ini, tetapi memperbarui ke versi build: grade:

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

Dan:

buildToolsVersion "23.0.2"

Keberhasilan!

Ds Digital
sumber
3

Ganti android:srcdenganapp:srcCompat

AnupamChugh
sumber
2

Saya terkejut dengan masalah yang sama persis ketika saya membuat versi baru aplikasi saya. Ketergantungan saya pada appcompact disetel ke pembaruan otomatis.

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

Jadi, segera setelah versi baru tersedia (dalam hal ini versi 23.2.0) itu akan menggantikan versi lama yang Anda gunakan untuk membangun.

Jadi Anda bisa beralih kembali ke versi sebelumnya dari pustaka appcompat (Perbaikan cepat):

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

Atau simpan versi perpustakaan saat ini dan gunakan jawaban Ajinkya seperti yang dijelaskan oleh google dalam catatan rilis versi 23.2.0 . Jika Anda memilih yang lebih baru, jangan lupa untuk memperbarui alat build gradle ke versi 1.5.0 atau Anda tidak dapat menggunakan parameter baru seperti generatedDensities:

classpath 'com.android.tools.build:gradle:1.5.0'
Gomino
sumber
2

Menghadapi masalah yang sama, solusi ini memperbaikinya.

Di kelas Anda lakukan saja

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

dan juga tambahkan ini di file gradle Anda jika belum.

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}
Gomez NL
sumber
1

Saya telah memperbaikinya dengan menyetel ..

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'
Rcc
sumber
Mencoba ini tetapi tidak berhasil untuk saya ... Menggunakan Android-IDE
Karyuu Ouji
1

Saya menemui masalah ini juga, apa yang saya lakukan: perubahan

compileSdkVersion 24
buildToolsVersion "22.0.1"

untuk

compileSdkVersion 24
buildToolsVersion "24.0.1"
极速 24 号
sumber
1

Sisipkan ke build.gradle (Module: app):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

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

Setelah itu, gunakan kode di bawah ini, di AppActivity Anda:

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

Jika tersedia, gunakan app: srcCompat sebagai ganti android: src dan android: background , dalam file sumber daya XML

amiron
sumber
0

Saya mengalami masalah ini, tetapi memperbarui ke versi di bawah ini memperbaikinya untuk saya:

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

Dan:

buildToolsVersion "23.0.2"

Ketergantungan modul:

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'
T. Coutlakis
sumber
0

Saya memperbaiki masalah dengan mengganti

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

dengan

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

Saya mendapatkan kesalahan yang sama di Android Studio 2.2 setelah saya memperbarui dependensi Gradle saya ke versi terbaru tetapi lupa memperbarui buildToolsVersion proyek saya.

Aku berubah:

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

untuk:

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

Sementara buildToolsVersion tetap "22.0.1"seperti ini:

buildToolsVersion "22.0.1"

Jadi yang saya lakukan hanyalah memperbarui buildToolsVersion ke 24 seperti ini:

buildToolsVersion "24"

karena sebelumnya telah diunduh dengan SDK Manager. Jadi periksa yang terbaru buildToolsVersiondari SDK Manager dan lihat apakah cocok dengan versi dependensi.

Semoga ini bisa membantu seseorang.

Cletus Ajibade
sumber
0

Bagi saya apa yang berhasil ... adalah menghapus 's' dari 'https' di deklarasi namespace dari drawable vektor xml saya.

XML itu berasal dari dokumentasi Google Android itu sendiri. Anda dapat melihat di tangkapan layar bahwa xmlns adalah 'http' tetapi dalam versi salin-tempel di bawah, ini adalah 'https'.

Ini akan menghentikan kesalahan rendering di penampil Aset Vektor, tetapi Anda masih tidak akan melihat apa pun, karena alasan yang tidak saya mengerti. Seharusnya terlihat seperti kunci inggris.

Jika Anda mengklik kanan folder drawable dan "New -> Vector Asset", Anda mendapatkan aset ikon android yang berfungsi.

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

Baik desain saya dan appcompat-v7 saya menggunakan 23.2.1, dan buildToolsVersion 23.0.2.

Ini baru saja masuk. Kunci pas yang dihasilkan oleh file antarmuka 'ikon material' -> baru -> aset vektor -> ikon material (lalu klik ikon dan pilih kunci pas) adalah:

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

Utilitas online ini saya lakukan dengan baik. Gunakan Chrome. Ini mengubah SVG menjadi sumber daya dapat digambar untuk vektor android.

Jan Jansz
sumber
0

masalahnya adalah:

/VdcInflateDelegate: Exception while inflating <vector>

larutan:

diubah compileSdkVersion 23 buildToolsVersion "23.0.2" menjadicompileSdkVersion 24 buildToolsVersion "24.0.2"

kode solusi:

compileSdkVersion 24
buildToolsVersion '24.0.1'

menggunakan kode di atas ini saya memecahkan masalah

shafiq-ur-rehman
sumber
0

Cukup tambahkan ketergantungan berikut di build.gradle Anda. ini akan memperbaiki masalah Anda. Saya menggunakan 25.0.2 buildToolsVersion.

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

Nanda Gopal
sumber
0

Saya mengubah FragmentActivity ke AppCompatActivity, masalah sudah terpecahkan. Lingkungan saya adalah:

compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"
ttdevs
sumber
0

Dalam kasus saya , solusi ini berhasil:

Menggunakan

android:theme="@style/TextLabelWhite"

seperti di xml Anda. Ubah gaya induk ke gaya AppTheme Anda, seperti:

<style name="TextLabelWhite" parent="AppTheme">
Alex Jolig
sumber
0

Meskipun saya memiliki dukungan vektor yang diaktifkan di gradle saya dan memiliki versi terbaru dari gradle, alat pembuatan, pustaka dukungan, dan studio Android, saya masih mendapatkan kesalahan.

Berikut perbaikan untuk kasus saya:

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

untuk menekan peringatan lint, tambahkan ini @SuppressLint("RestrictedApi")

Mohamed ALOUANE
sumber
0

coba gunakan: compile 'com.android.support:design:23.1.1'

alih-alih: compile "com.android.support:appcompat-v7:23.2.0"

FatalMan
sumber
0

Juga diamati di buildToolsVersion '26 .0.2 '

Merendahkan untuk buildToolsVersion '25 .0.3' bekerja .

Untuk buildToolsVersion '26 .0.2 ': Coba AppCompat for Widgets Contoh: TextView -> android.support.v7.widget.AppCompatTextView (Untuk dukungan Versi Android yang lebih lama) Juga diamati pada perangkat kelas bawah saat perangkat tidak dapat mengembangkan drawable karena memori kekurangan. (Meskipun drawable ada di direktori res-> drawable Anda): Coba ubah drawable Anda dengan yang tidak terlalu rumit .

Sandeep PC
sumber