2016-03-02 107 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

它應該在設置內容視圖之前完成。最好在「靜態」塊中。 –

相關問題