web-dev-qa-db-fra.com

Ligne de fichier XML binaire n ° 1: vecteur de balise extractible non valide

J'ai une application qui fonctionne parfaitement sur la plupart des appareils. Cependant, je reçois une exception FATAL chaque fois que j'essaie d'exécuter mon application sur des périphériques avec une API <21.

Voici le journal:

Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aceinteract.sleak/com.aceinteract.sleak.activity.LoginRegisterActivity}: Android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2262)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2316)
at Android.app.ActivityThread.access$700(ActivityThread.Java:158)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1296)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:176)
at Android.app.ActivityThread.main(ActivityThread.Java:5365)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1102)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:710)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:752)
at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:846)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:742)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:495)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.Java:60)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353)
at Android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.Java:287)
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:139)
at com.aceinteract.sleak.activity.LoginRegisterActivity.onCreate(LoginRegisterActivity.kt:21)
at Android.app.Activity.performCreate(Activity.Java:5326)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1097)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2225)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2316) 
at Android.app.ActivityThread.access$700(ActivityThread.Java:158) 
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1296) 
at Android.os.Handler.dispatchMessage(Handler.Java:99) 
at Android.os.Looper.loop(Looper.Java:176) 
at Android.app.ActivityThread.main(ActivityThread.Java:5365) 
at Java.lang.reflect.Method.invokeNative(Native Method) 
at Java.lang.reflect.Method.invoke(Method.Java:511) 
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1102) 
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:869) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: Android.content.res.Resources$NotFoundException: File res/drawable/ic_person_accent_24dp.xml from drawable resource ID #0x7f07006f
at Android.content.res.Resources.loadDrawable(Resources.Java:2842)
at Android.content.res.TypedArray.getDrawable(TypedArray.Java:602)
at Android.widget.TextView.<init>(TextView.Java:1023)
at Android.widget.EditText.<init>(EditText.Java:76)
at Android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.Java:64)
at Android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.Java:60)
at Android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.Java:112)
at Android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.Java:1016)
at Android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.Java:1073)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.Java:280)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:681)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:752) 
at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:846) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:742) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:495) 
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.Java:60) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353) 
at Android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.Java:287) 
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:139) 
at com.aceinteract.sleak.activity.LoginRegisterActivity.onCreate(LoginRegisterActivity.kt:21) 
at Android.app.Activity.performCreate(Activity.Java:5326) 
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1097) 
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2225) 
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2316) 
at Android.app.ActivityThread.access$700(ActivityThread.Java:158) 
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1296) 
at Android.os.Handler.dispatchMessage(Handler.Java:99) 
at Android.os.Looper.loop(Looper.Java:176) 
at Android.app.ActivityThread.main(ActivityThread.Java:5365) 
at Java.lang.reflect.Method.invokeNative(Native Method) 
at Java.lang.reflect.Method.invoke(Method.Java:511) 
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1102)at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:869) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
at Android.graphics.drawable.Drawable.createFromXmlInner(Drawable.Java:917)
at Android.graphics.drawable.Drawable.createFromXml(Drawable.Java:858)
at Android.content.res.Resources.loadDrawable(Resources.Java:2839)
at Android.content.res.TypedArray.getDrawable(TypedArray.Java:602) 
at Android.widget.TextView.<init>(TextView.Java:1023) 
at Android.widget.EditText.<init>(EditText.Java:76) 
at Android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.Java:64) 
at Android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.Java:60) 
at Android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.Java:112) 
at Android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.Java:1016) 
at Android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.Java:1073) 
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.Java:280) 
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:681) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:752) 
at Android.view.LayoutInflater.parseInclude(LayoutInflater.Java:846) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:742) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:760) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:495) 
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.Java:60) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:397) 
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:353) 
at Android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.Java:287) 
at Android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.Java:139) 
at com.aceinteract.sleak.activity.LoginRegisterActivity.onCreate(LoginRegisterActivity.kt:21) 
at Android.app.Activity.performCreate(Activity.Java:5326) 
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1097) 
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2225) 
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2316) 
at Android.app.ActivityThread.access$700(ActivityThread.Java:158) 
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1296) 
at Android.os.Handler.dispatchMessage(Handler.Java:99) 
at Android.os.Looper.loop(Looper.Java:176) 
at Android.app.ActivityThread.main(ActivityThread.Java:5365) 
at Java.lang.reflect.Method.invokeNative(Native Method) 
at Java.lang.reflect.Method.invoke(Method.Java:511) 
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1102) 
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:869) 
at dalvik.system.NativeStart.main(Native Method) 

Voici le layout XML

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:id="@+id/layout_register"
    Android:visibility="gone"
    xmlns:app="http://schemas.Android.com/apk/res-auto">

    <EditText
        Android:id="@+id/edit_register_full_name"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        Android:drawableEnd="@drawable/ic_person_accent_24dp"
        Android:padding="20dp"
        Android:layout_width="0dp"
        Android:hint="@string/hint_full_name"
        Android:singleLine="true"
        Android:layout_height="wrap_content"
        Android:inputType="textPersonName"
        Android:drawableRight="@drawable/ic_person_accent_24dp" />

    <EditText
        Android:id="@+id/edit_register_email"
        app:layout_constraintTop_toBottomOf="@id/edit_register_full_name"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        Android:drawableEnd="@drawable/ic_email_accent_24dp"
        Android:padding="20dp"
        Android:layout_width="0dp"
        Android:hint="@string/hint_email"
        Android:inputType="textEmailAddress"
        Android:layout_height="wrap_content"
        Android:drawableRight="@drawable/ic_email_accent_24dp" />

    <EditText
        Android:id="@+id/edit_register_password"
        app:layout_constraintTop_toBottomOf="@id/edit_register_email"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        Android:drawableEnd="@drawable/ic_vpn_key_accent_24dp"
        Android:padding="20dp"
        Android:inputType="textPassword"
        Android:layout_width="0dp"
        Android:hint="@string/hint_password"
        Android:layout_height="wrap_content"
        Android:drawableRight="@drawable/ic_vpn_key_accent_24dp" />

    <CheckBox
        Android:id="@+id/check_register_show_password"
        Android:text="@string/desc_show_password"
        Android:layout_marginTop="10dp"
        app:layout_constraintTop_toBottomOf="@id/edit_register_password"
        app:layout_constraintLeft_toLeftOf="parent"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" />

</Android.support.constraint.ConstraintLayout>

Et le gradle file:

apply plugin: 'com.Android.application'

apply plugin: 'kotlin-Android'

apply plugin: 'kotlin-Android-extensions'

Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.aceinteract.sleak"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    buildToolsVersion '27.0.2'
}

androidExtensions {
    experimental = true
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.Android.support:appcompat-v7:27.0.2'
    implementation 'com.Android.support:design:27.0.2'
    implementation 'com.Android.support:customtabs:27.0.2'
    implementation 'com.Android.support:support-vector-drawable:27.0.2'
    implementation 'com.Android.support:support-v4:27.0.2'
    implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.Android.support:animated-vector-drawable:27.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.1'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.Android.support:cardview-v7:27.0.2'
    implementation 'com.Android.support:gridlayout-v7:27.0.2'
    implementation 'com.Android.support:recyclerview-v7:27.0.2'
    implementation 'com.Android.support:design:27.0.2'
    implementation 'com.Android.support:palette-v7:27.0.2'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.mikhaellopez:circularimageview:3.0.2'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'uk.co.chrisjenx:calligraphy:2.2.0'
}

J'ai essayé de passer à AppComaptEditText , mais cela ne donne toujours que la même erreur.

Merci d'avance :)

17
Ace Falobi

Documentation about Vector Graphics dit:

Android 4.4 (API de niveau 20) et inférieur ne prend pas en charge les dessins vectoriels.

Avec Support Library, vous disposez d'une compatibilité ascendante avec l'attribut app:srcCompat, mais il n'est pas rétroporté pour Android:drawableRight.

La solution consiste à continuer à utiliser les fichiers .PNG pour ces cas ou à essayer de le définir par code.

30
Juan Cruz Soler

Pour créer une utilisation vectorielle dessinable:

vector = VectorDrawableCompat.create(context.getResources(), R.drawable.res, null);

Ou ajoutez AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) à la méthode Application onCreate()

2
Mikhail Sharin