7

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

因此,当我通过文档 Google:添加 VectorDrawable 支持库将 vectorDrawables 添加到配置时,我收到以下错误:

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 插件的困惑。在阅读添加紧凑矢量绘图指令时我很困惑。

4

4 回答 4

21

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

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'

于 2016-02-29T07:33:25.960 回答
5

专门从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
        }
        ...
    }
    
于 2016-04-06T21:55:44.410 回答
0

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

该问题已通过删除vectorDrawables并添加vectorDrawables.useSupportLibrary = truedefaultConfig.

老的

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'
        }
    }
}
于 2019-08-01T15:25:29.073 回答
0

如果你有useSupportLibary最新版本使用

vectorDrawables.useSupportLibary(true)
In your defaultconfig 
于 2020-06-07T09:42:45.260 回答