Android 工作室 1.5.1:找不到 属性 'vectorDrawables'

Android studio 1.5.1: Could not find property 'vectorDrawables'

我正在使用 Android Studio 1.5.1、Gradle 2.8 和我的项目 min sdk vserion:14,目标 sdk 版本:23。

因此,当我通过文档 Google 将 vectorDrawables 添加到配置时:Added VectorDrawable support library,出现以下错误:

Error:(13, 0) Could not find property 'vectorDrawables' on ProductFlavor_Decorated{name=main, dimension=null, minSdkVersion=ApiVersionImpl{mApiLevel=14, mCodename='null'}, targetSdkVersion=ApiVersionImpl{mApiLevel=23, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptNdkModeEnabled=null, versionCode=25, versionName=1.0.25, applicationId=com.smsoft.alibaba, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}}.

这是我的build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.smsoft.alibaba"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 25
        versionName "1.0.25"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     testCompile 'junit:junit:4.12'
     compile 'com.android.support:appcompat-v7:23.2.0'
     compile 'com.android.support:design:23.2.0'
     compile 'com.android.support:support-v4:23.2.0'
     compile 'com.android.support:cardview-v7:23.2.0'
}

有人知道如何解决这个问题吗?

编辑

感谢@Gabriele Mariotti 指出我在 gradle 和 gradle 插件之间的困惑。我在阅读添加 Compact Vector Drawables 说明时感到困惑。

如果您使用 v2.0 或更高版本的 Gradle 插件,您必须使用:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

如果您使用 v1.5.0 或更低版本的 Gradle 插件,您需要将以下内容添加到您的应用的 build.gradle:

android {
  defaultConfig {
    // Stops the Gradle plugin’s automatic rasterization of vectors
    generatedDensities = []
  }
  // Flag to tell aapt to keep the attribute ids around
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

不要将 gradle 与 gradle 插件混淆。检查根文件夹(或模块内部)中的 build.gradle 以获取 gradle 插件使用的版本(检查行 classpath 'com.android.tools.build:gradle:1.5.0')

专门从com.android.tools.build:gradle:1.5.0升级。

  1. 编辑/build.gradle并设置:

    buildscript {
        ...
        dependencies {
            ...
            classpath 'com.android.tools.build:gradle:2.0.0'
            ...
        }
    }
    
  2. 编辑 /gradle/wrapper/gradle-wrapper.properties 并设置:

    distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
    
  3. 编辑您的模块' build.gradle 并添加:

    android {
        ...
        defaultConfig {
            ...
            vectorDrawables.useSupportLibrary = true
        }
        ...
    }
    

我在使用 v3.4.2 上的 Gradle 插件时遇到了这个问题。它阻止了项目同步的完成。

问题已通过删除 vectorDrawables 并将 vectorDrawables.useSupportLibrary = true 添加到 defaultConfig 得到解决。

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.1"
    defaultConfig {
        applicationId "com.example.android.diceroller"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }vectorDrawables
}

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.1"
    defaultConfig {
        applicationId "com.example.android.diceroller"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

如果你有 useSupportLibary 最新版本 使用

vectorDrawables.useSupportLibary(true)
In your defaultconfig