25

Recently android support library was updated to 23.2.0. After downloading android sdk and updating android design support library into 23.2.0, this error happens repeatedly. My project can't even be compiled. The complete error log says:

03-02 12:00:04.945 9324-9324/com.creditease.zhiwang.debug E/AndroidRuntime: FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.creditease.zhiwang.debug/com.creditease.zhiwang.activity.TabContainerActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
        at android.app.ActivityThread.access$700(ActivityThread.java:169)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5528)
        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:1209)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
        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:2974)
        at android.content.res.Resources.getDrawable(Resources.java:1558)
        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.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184)
        at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91)
        at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74)
        at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210)
        at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119)
        at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300)
        at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265)
        at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107)
        at android.app.Activity.performCreate(Activity.java:5372)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
        at android.app.ActivityThread.access$700(ActivityThread.java:169) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5528) 
        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:1209) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) 
        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:933)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873)
        at android.content.res.Resources.loadDrawable(Resources.java:2970)
        at android.content.res.Resources.getDrawable(Resources.java:1558) 
        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.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:184) 
        at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:91) 
        at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:74) 
        at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:210) 
        at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:119) 
        at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:300) 
        at com.creditease.zhiwang.activity.BaseActivity.initToolBar(BaseActivity.java:265) 
        at com.creditease.zhiwang.activity.TabContainerActivity.onCreate(TabContainerActivity.java:107) 
        at android.app.Activity.performCreate(Activity.java:5372) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2271) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
        at android.app.ActivityThread.access$700(ActivityThread.java:169) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1330) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5528) 
        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:1209) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) 
        at dalvik.system.NativeStart.main(Native Method)

This error was thrown by setSupportActionBar(toolbar); whereas it didn't happen at 23.0.1 of android design library 23.2.0. Meanwhile according this log, I guessed this drawable was removed since android design library 23.2.0.

So, could someone told me why is this happening?

Laxmeena
  • 780
  • 2
  • 7
  • 28
SilentKnight
  • 13,761
  • 19
  • 49
  • 78
  • Did you checked the drawable folder if this file exists or not? If this file exists in the drawable folder, make sure that, the file name is all small letters and have no special characters excepts _. Also try to find the place where this resource is used. – Vishnu Mar 02 '16 at 06:16
  • @cricket_007 Yes, this one: `res/drawable/abc_ic_ab_back_material.xml`. Obviously, this drawable comes from `android design library`. – SilentKnight Mar 02 '16 at 06:18
  • @Vishnu I only changed the version of `android design library` from `23.0.1` to `23.2.0`. All resources are OK. – SilentKnight Mar 02 '16 at 06:20
  • Well, yeah I can read the logcat. You didn't seem to specify what the "Caused by" line indicated in your question, so I was simply pointing it out – OneCricketeer Mar 02 '16 at 06:20
  • @cricket_007 `setSupportActionBar(toolbar);` this line causes this at present. But, would it and how? – SilentKnight Mar 02 '16 at 06:24
  • The full name of the XML file is (roughly, going off android naming scheme) "action bar compat, ice cream, action bar, back button, material"... So, that being said, it's the drawable for the back button on the toolbar, so it makes sense that line triggers the problem – OneCricketeer Mar 02 '16 at 06:28
  • I having same problem in `24.0.0`. How did you check the the file on `res/drawable/abc_ic_ab_back_material.xml` Idk how to get into this path. I'm also using `setSupportActionBar` – wviana Jun 30 '16 at 12:38
  • May it have something with `AppCompatActivity`? Is it ok for using it in newer versions of support library ? – wviana Jun 30 '16 at 12:56

7 Answers7

42

I think you need to make changes in your gradle.

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

You’ll note this new attribute only exists in the version 2.0 of the Gradle Plugin. If you are using Gradle 1.5 you’ll instead use

// Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     // Stops the Gradle plugin's automatic rasterization of vectors
     generatedDensities = []  
  }  
  // Flag to tell aapt to keep the attribute ids around
  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 }  

I found similar question here.

See Support Vector Drawables and Animated Vector Drawables in Android Support Library update. I hope its help you.

Community
  • 1
  • 1
pRaNaY
  • 24,642
  • 24
  • 96
  • 146
10

As per as the documentation of Google's support library for 24.0.0, they have changed the vector drawable library to what it was before: Added AppCompatDelegate.setCompatVectorFromResourcesEnabled() method to re-enable usage of vector drawables in DrawableContainer objects on devices running Android 4.4 (API level 19) and lower. See AppCompat v23.2 — Age of the vectors! for more information.

I faced the same issue and my SVG statelist drawables used in my project were working just fine till Marshmallow devices.

Later when I got the crash for the same in Android N, I realized that the svgs were a bit corrupted and contained characters like: � and this caused the crash.

But these were not reflected in Android Marshmallow and prior devices.

Make sure your vector drawable doesn't contain any of those characters as the way of parsing has been changed from the library 24.0.0. So vector drawables working fine till Marshmallow might not work in Nougat devices.

Hope this helps :)

6

I solve this problem by updating my support library from

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

to the same dependencies of 23.2.1.

When I met the problem, I had not made any changes in my module built by Android Studio.

So I was so confused then I tried to update android support library. After updating, please remember to sync your build.gradle

Sylvester Yao
  • 237
  • 2
  • 7
5

I solved the issue as follows: Try with changing styles.xml to

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>

This is because if style requires ActionBar there are chances of not finding abc_back button but with no action bar problem is solved

Subham Gupta
  • 341
  • 4
  • 8
2

This worked for me: Replace the com.android.support:design version in build.gradle with one that works. Find which version works by creating a new project from scratch in Android Studio and using the version from that.

I had this problem when I added a Navigation Drawer Activity from the File->New->Activity menu to an older project with Android Studio.

Android Studio added a dependency like so: compile 'com.android.support:design:24.0.0-alpha1' (I'm not sure of the exact version but it had '24' and 'alpha').

I then created a new dummy project, specifying a Navigation Drawer Activity in the new project wizard. I noticed that the new project had a different dependency: compile 'com.android.support:design:23.2.1'

So I took this dependency and put it in the first project, and the problem was solved.

pRaNaY
  • 24,642
  • 24
  • 96
  • 146
user13097
  • 343
  • 3
  • 12
  • You saved me. I changes mine into `compileSdkVersion 23`, `compile 'com.android.support:appcompat-v7:23.4.0'` and `compile 'com.android.support:design:23.4.0'`. So I looked for the latest 23 version of *appcompat-v7*. I was using version **24** but it didn't worked on Android 4.4.4 – wviana Jun 28 '16 at 16:29
  • 1
    I've found that my code needs version 24 to work property. So I'm back trying to fix this vector drawable problem. If you get any tip let me know. – wviana Jun 29 '16 at 21:06
  • Essa deveria ser a resposta!!! – Emerson Barcellos Aug 02 '16 at 00:57
2

Source - http://android-developers.blogspot.in/2016/02/android-support-library-232.html

when using AppCompat with ImageView (or subclasses such as ImageButton and FloatingActionButton), you’ll be able to use the new app:srcCompat attribute to reference vector drawables (as well as any other drawable available to android:src):

<ImageView  
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content"  
  app:srcCompat="@drawable/ic_add" />  

where you can define your app in your root element as

xmlns:app="http://schemas.android.com/apk/res-auto"

Rahul Chaurasia
  • 1,601
  • 2
  • 18
  • 37
0

I've had this issue because my Manifest file had style that was defined only in v21 style. Not sure why it was pointing at this type of error but someone may find this helpful.

Bartando
  • 719
  • 8
  • 26