2016-03-02 108 views
24

最近android support library已更新至23.2.0。在下载android sdk并将android设计支持库更新为23.2.0后,此错误重复发生。我的项目甚至无法编译。完整的错误日志说:来自可绘制资源ID的文件res/drawable/abc_ic_ab_back_material.xml#0x7f020016

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) 

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

那么,有人能告诉我为什么会发生这种情况?

+0

如果此文件存在与否,您是否检查过drawable文件夹?如果此文件存在于可绘制文件夹中,请确保文件名全是小写字母,并且没有除_之外的特殊字符。同时尝试查找使用此资源的位置。 – Vishnu

+0

@ cricket_007是的,这个:'res/drawable/abc_ic_ab_back_material.xml'。显然,这个drawable来自'android设计库'。 – SilentKnight

+0

@Vishnu我只将'android design library'的版本从'23.0.1'改为'23.2.0'。所有资源都可以。 – SilentKnight

回答

41

我认为您需要对您的gradle进行更改。

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

你会注意到这个新属性只存在于Gradle插件的2.0版本中。如果您使用的摇篮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" 
    } 
} 

我发现类似的问题here

请参阅Android支持库更新中的Support Vector Drawables and Animated Vector Drawables。 我希望它能帮助你。

+1

而你需要使用@style/Theme.AppCompat.NoActionBar。以获得它运行较低的版本.. –

+3

我需要安装buildToolsVersion“23.0.3”才能工作 –

+0

我收到一个错误:'错误:(35,0)无法找到PropertyFlavor_Decorated属性'vectorDrawables'{name = main,dimension = null,minSdkVersion = ApiVersionImpl {mApiLevel = 17,mCodename ='null'},targetSdkVersion = ApiVersionImpl {mApiLevel = 23,mCodename ='null'}' –

6

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

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

23.2.1相同的依赖。

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

所以我很困惑,然后我试图更新android支持库。 更新完成后,请记得更新你的build.gradle

2

这为我工作:在build.gradle与一个工程更换com.android.support:design版本。通过在Android Studio中从头开始创建新项目并使用该版本来查找哪个版本可行。

我有这个问题,当我从文件添加抽屉式导航活动 - > - >活动菜单与Android Studio中的旧项目。 (我不确定确切的版本,但它有'24'和'阿尔法')。我们不知道它的确切版本,但它有24'和'alpha')。

然后我创建了一个新的虚拟项目,在新项目向导中指定了一个导航抽屉活动。我注意到新项目有不同的依赖关系:compile 'com.android.support:design:23.2.1'

所以我把这个依赖关系放在第一个项目中,问题就解决了。

+0

你救了我。我把它改成'compileSdkVersion 23','compile'c​​om.android.support:appcompat -v7:23.4.0''和'compile'c​​om.android.support:design:23.4.0''。所以我查找了* appcompat-v7 *的最新版本23。我正在使用版本** 24 **,但它没有在Android 4.4.4上工作 – wviana

+1

我发现我的代码需要版本24工作属性。所以我回来试图解决这个向量可绘制的问题。如果您有任何提示,请告诉我。 – wviana

+0

Essa deveria ser resposta !!! –

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> 

这是因为如果风格需要动作条有没有找到abc_back按钮的机会,但没有行动起来吧问题已解决

0

我有过这个问题,因为我的清单文件只有v21风格的风格。不知道为什么它指向这种类型的错误,但有人可能会觉得这很有帮助。

1

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

在那里你可以在你的根元素定义应用作为

的xmlns:程序=“http://schemas.android。 com/apk/res-auto“

10

按照是24.0.0的Google支持库的文档,他们已将矢量可绘制库更改为之前的版本: 已添加AppCompatDelegate.setCompatVectorFromResourcesEnabled()方法可重新启用运行Android 4.4(API级别19)和更低版本的设备上的DrawableContainer对象中的矢量绘图的使用。请参阅AppCompat v23.2 - Age of the vectors!了解更多信息。

我面临同样的问题,我的项目中使用的SVG状态列表drawables工作得很好,直到Marshmallow设备。

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

但是,这些并未体现在Android Marshmallow和现有设备中。

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

希望这会有所帮助:)

+1

太棒了!谢谢(你的)信息。保存我的时间 –

+0

你在哪里添加了AppCompatDelegate.setCompatVectorFromResourcesEnabled() – Skyler

+0

它应该在设置内容视图之前完成。最好在“静态”块中。 –

相关问题