升级到支持库24.2.1后,Android工作室会在drawable标签向量上抛出错误

时间:2016-08-22 22:15:23

标签: android android-vectordrawable

我升级了我的android studio的版本,现在我使用的是2.1.3版本,我相信它是当前版本。 com.android.support:appcompat-v7也已升级到24.2.0。

一切正常,但导航后退箭头不断发出错误, 这是错误

  08-22 18:04:59.470 11403-11403/com.app.oues E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: com.app.oues, PID: 11403
                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.oues/com.app.oues.Registration}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020014
                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                    at android.os.Looper.loop(Looper.java:136)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                                    at java.lang.reflect.Method.invoke(Method.java:515)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                    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 #0x7f020014
                                                                    at android.content.res.Resources.loadDrawable(Resources.java:2101)
                                                                    at android.content.res.Resources.getDrawable(Resources.java:700)
                                                                    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:346)

这是调用工具栏上的箭头的代码

 final Drawable upArrow = ContextCompat.getDrawable(getApplicationContext(), R.drawable.abc_ic_ab_back_material);
    getSupportActionBar().setHomeAsUpIndicator(upArrow);

这是我的成绩

 android {
compileSdkVersion 24
buildToolsVersion "24.0.1"

defaultConfig {
    applicationId "com.app.oues"
    minSdkVersion 9
    targetSdkVersion 24
    versionCode 2
    versionName "1.0.1"
    vectorDrawables.useSupportLibrary = true

}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}}dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0' }

阅读完之后,我将vectorDrawables.useSupportLibrary = true添加到了gradle但它不起作用,错误不断弹出。如果有人可以提供帮助,我将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

我也遇到了第24版appCompat库的问题。在我的堆栈跟踪中,低于NotFoundException,我有一个XmlPullParserException,其原因是'无效的可绘制标记向量'。虽然确保您的可绘制XML文件只是在您的“可绘制”文件中。源文件夹。另外,我刚刚使用了(已弃用的)getResources()。getDrawable()调用,这似乎有效。我也尝试了你的' ContextCompat'打电话但它没有改变任何东西。我的电话是:

syncButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_sync_timer_day));

这似乎只影响API 19设备(未在下面测试)。它适用于API 22,23和24设备(未测试20或21)。

我的解决方法是回滚到com.android.support:appcompat-v7:23.2.1' (和其他相关的V 23东西)。现在在模拟器中测试了API 19,22,23和24。

花了一些时间来弄清楚如何支持所有口味,但这似乎有效。

我的应用程序Gradle.build文件如下所示,虽然我可能有一些实际上不需要的东西,因为我尝试了多个帖子中的所有内容(错误的是我一次更改多个东西) #39;害怕)。

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'RaceTac'
            keyPassword 'clover99'
            storeFile file('C:/Users/Dave/Documents/Dev/AndroidKeyStore.jks')
            storePassword 'clover99'
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.hubbardsoftware.racetac"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 14
        versionName '1.05'
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
        generatedDensities = []
    }

    // Needed for backward compatibility with Vector graphics
    aaptOptions {
        additionalParameters "--no-version-vectors"
    }

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

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    // compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:design:23.2.1'
    compile 'com.google.android.gms:play-services:9.4.0'
    compile 'com.android.support:support-v4:23.2.1'
    compile 'com.google.android.gms:play-services-ads:9.4.0'
    compile 'com.google.android.gms:play-services-auth:9.4.0'
    compile 'com.google.android.gms:play-services-gcm:9.4.0'
    compile 'com.android.support:multidex:1.0.1'
}

不确定这是一个直接的答案,但V 24似乎确实存在一些问题。