工具栏:IllegalStateException - 为VectorDrawableCompat配置构建

时间:2016-08-10 09:36:36

标签: android android-toolbar

我正在使用Android Studio 2.1.2。我用minSdkVersion开始了一个新项目为19.我的活动扩展了AppCompatActivity。该项目以使用片段的空活动开始。

使用API​​ 24预览content_main.xml时,一切都很好。在预览API 19时,我遇到以下渲染问题:

 The following classes could not be instantiated:
- android.support.v7.widget.Toolbar
java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat

我添加了我发现的与gradle有关的所有内容(2个文件):

classpath 'com.android.tools.build:gradle:2.1.2'
**vectorDrawables.useSupportLibrary = true**
buildToolsVersion "24.0.1"
compile 'com.android.support:appcompat-v7:24.1.1'
**compile "com.android.support:support-v4:24.1.1"**
compile 'com.android.support:design:24.1.1

但仍然出现错误。我在互联网上找到了很多答案。但没有人帮助。使用API​​ 19的新工具栏是否有问题?

4 个答案:

答案 0 :(得分:6)

这对我很有用

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    generatedDensities = []
}

// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
    additionalParameters "--no-version-vectors"
}

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

}

请注意以上代码:

// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
    additionalParameters "--no-version-vectors"
}

generatedDensities = []

答案 1 :(得分:0)

来自此Google Issue

buildscript {
  ...
  dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0'
  }
}

请查看此问题以获取更多帮助。

<强>更新

按如下方式配置您的应用build.gradle文件

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

dependencies {
  compile 'com.android.support:appcompat-v7:23.3.0'
}

来源 Age Of Vectors

答案 2 :(得分:0)

首先,有两种类型的gradle文件。

  1. build.gradle(Project: ProjectName)
  2. build.gradle(Module: app)
  3. 有关这两个文件的详细信息,请查看此answer

    来到你的问题,

      

    我在网上找到了很多答案,但都没有帮助。我正在使用   Android Studio 2.1.2,我的活动扩展了AppCompatActivity并添加了   到了gradle(2个文件)我发现的每件事情都相关:但仍然是   出现错误。

    根据您发布的内容,您似乎没有在正确的位置添加正确的内容。

    您不应将应用程序依赖项放在build.gradle(Project: ProjectName)中 - Android Studio说,

      

    //注意:不要在此处放置应用程序依赖项;他们属于

         

    //在单个模块build.gradle文件中

    因此,请将build.gradle(Project: ProjectName)中的依赖项替换为

    dependencies {
            classpath 'com.android.tools.build:gradle:2.1.2'
        }
    

    build.gradle(Module: app)中的依赖项替换为

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

    完成上述操作后,您会看到&#34; 立即同步&#34;右上角的选项。点击它。 Android Studio将负责剩余的事情。

    question也与您类似。通过它。这可能有所帮助。

答案 3 :(得分:0)

添加:

<强>的build.gradle

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

Activity课程之上:

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

最后一件事是将vector drawables置于其他任何可绘制内容中,例如selectorLayerList等。如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/drawable_vector" />
</selector>

并使用上面的drawable,而不是直接设置矢量drawables。无论何时你想在棒棒糖前设备上使用矢量绘图,这都可以在其他地方使用。