11

Wenn ich vectorDrawables.useSupportLibrary = true in Gradle dann starten Sie die App, die es leider gestoppt. Wenn ich vectorDrawables.useSupportLibrary = true die App funktioniert entfernen.Android vectorDrawables.useSupportLibrary = true stoppt App

Mein gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
     applicationId "com.helikanon.firstapp" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.jakewharton:butterknife:8.4.0' 
    compile 'com.android.support:support-v4:25.1.0' 
    testCompile 'junit:junit:4.12' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
    compile 'uk.co.chrisjenx:calligraphy:2.2.0' 
    compile 'com.google.android.gms:play-services-ads:10.0.1' 
} 

Die Fehler:

E/AndroidRuntime: FATAL EXCEPTION: main 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.helikanon.firstapp/com.helikanon.firstapp.activities.MainActivity}: android.view.InflateException: Binary XML file line #62: Error inflating class Button 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
         at android.app.ActivityThread.access$600(ActivityThread.java:130) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
         at android.os.Handler.dispatchMessage(Handler.java:99) 
         at android.os.Looper.loop(Looper.java:137) 
         at android.app.ActivityThread.main(ActivityThread.java:4745) 
         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:786) 
         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 #62: Error inflating class Button 
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
. 
. 
. 

Die App abstürzt, wenn ich Api verwenden 16 und Api 19, aber wenn ich Api verwenden 23 es funktioniert.

+0

einen Blick auf diesen Artikel Take - http://chris.banes.me/2016/02/25/appcompat-vector/. Ich hatte dieses Problem auch. –

+0

Ich habe genau in diesem Artikel aber noch bin ich immer Fehler – Alexander

+0

Vielleicht haben Sie den Grund für den Absturz wissen wollte. Wie auch immer, welche Grad-Version verwendest du? –

Antwort

16

Sie können nicht Vector Drawables in allen anderen Ansichten außer ImageView in pre-Lutscher verwenden.

Sehen Sie bitte diesen SO Answer von Google Entwickler Anwalt.

Für AppCompat Benutzer, haben wir beschlossen, die Funktionalität zu entfernen, die Sie Vektor Drawables von Ressourcen auf Pre-Lollipop-Geräten aufgrund von Problemen in der in Version 23.2.0/23.2.1 [https://code.google.com/p/android/issues/detail?id=205236 verwenden lassen, Implementierung gefunden https://code.google.com/p/android/issues/detail?id=204708]. Die Verwendung von app:srcCompat und setImageResource() funktioniert weiterhin.

Wenn Sie die Vector Drawables Pre-Lutscher verwenden möchten, verwenden Sie können es programmatisch festlegen, indem sie in eine ziehbar umzusetzen.

Drawable drawable; 

if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { 
    drawable = context.getResources().getDrawable(drawableResId, context.getTheme()); 
} else { 
    drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, context.getTheme()); 
} 

button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); 
Verwandte Themen