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?



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


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


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


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

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


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


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

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


9

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

buildToolsVersion "23.0.2"

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

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'
        ...
    }
}

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

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!



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'

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
}

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'

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"

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


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'

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'

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.


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.


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


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'


0

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

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

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

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


0

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

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


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 .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.