来自可绘制资源ID的文件res/drawable/abc_ic_ab_back_material.xml#0x7f020016

Sil*_*ght 25 android android-gradle-plugin android-design-library

最近android support library更新到23.2.0.下载android sdk并更新android设计支持库后23.2.0,此错误反复发生.我的项目甚至无法编译.完整的错误日志说:

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)
Run Code Online (Sandbox Code Playgroud)

这个错误是由抛出setSupportActionBar(toolbar);,而它并没有在发生23.0.1android design library 23.2.0.同时根据这个日志,我猜测这个drawable已被删除android design library 23.2.0.

那么,有人能告诉我为什么会这样吗?

pRa*_*NaY 43

我认为你需要改变你的gradle.

// Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  
Run Code Online (Sandbox Code Playgroud)

您会注意到这个新属性仅存在于Gradle插件的2.0版本中.如果您使用的是Gradle 1.5,则可以使用

// 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"  
  }  
 }  
Run Code Online (Sandbox Code Playgroud)

我发现类似的问题在这里.

请参阅Android支持库更新中的支持向量Drawables和动画矢量Drawables.我希望它对你有所帮助.

  • 没有为我解决问题...仍然有资源未找到异常 (14认同)
  • 我需要安装buildToolsVersion"23.0.3"才能工作 (3认同)
  • 同样的问题,gradle 2.1,android libs 24.2.0.我修补了gradle配置,但异常仍然出现在api19(4.4.4) (2认同)

Ani*_*jee 10

根据Google支持库的文档24.0.0,他们已经将矢量可绘制库更改为之前的版本:添加了在运行Android 4.4(API级别19)及更低级别的设备上AppCompatDelegate.setCompatVectorFromResourcesEnabled()重新启用DrawableContainer对象中使用矢量绘图的方法.请参阅AppCompat v23.2 -  向量的年龄!欲获得更多信息.

我遇到了同样的问题,我的项目中使用的SVG statelist drawables在Marshmallow设备上工作得很好.

后来当我在Android N中遇到同样的崩溃时,我意识到svgs有点损坏并包含如下字符: 这导致了崩溃.

但这些并没有反映在Android Marshmallow和之前的设备上.

确保您的vector drawable不包含任何这些字符,因为解析方式已从库24.0.0更改.所以矢量drawables工作正常,直到棉花糖可能无法在牛轧糖设备中工作.

希望这可以帮助 :)

  • 这对我不起作用(API 19,4.4.2).获取`android.content.res.Resources $ NotFoundException` (2认同)

Syl*_*Yao 6

我通过更新我的支持库来解决这个问题

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

与...相同的依赖关系23.2.1.

当我遇到问题时,我没有对Android Studio构建的模块进行任何更改.

所以我很困惑然后我尝试更新android支持库.更新后,请记住更新您的build.gradle


小智 5

我解决了以下问题:尝试将styles.xml更改为

<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>
Run Code Online (Sandbox Code Playgroud)

这是因为如果样式需要ActionBar,则有可能找不到abc_back按钮但没有操作栏问题就解决了