在API<更新build.gradle之后,停止使用矢量drawables工作项目21

时间:2017-07-12 11:43:46

标签: android android-gradle android-vectordrawable

我有工作项目。

  • minSdkVersion 17
  • com.android.tools.build:gradle:2.3.3
  • gradle 4.1
  • Android Studio 3 Canary 6

我有我的gradle文件:

defaultConfig {
        vectorDrawables.useSupportLibrary = true
        vectorDrawables.generatedDensities = []
}

我也打电话给活动:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

应用程序运行良好。现在改为:

  • com.android.tools.build:gradle:3.0.0-alpha6
  • 添加到存储库google()

执行gradle clean assembleDebug

App继续适用于具有API>的设备20.但是对于API< 21(谷歌Android模拟器)在启动应用程序时崩溃。 我在logcat错误中看到:Resources$NotFoundException: Resource ID #0x7f080058(0x7f080058是可绘制的abc_vector_test)。

为什么?

UPD 2017-07-19 :它已修复并发布于com.android.tools.build:gradle:3.0.0-alpha7

3 个答案:

答案 0 :(得分:8)

我添加到gradle.properties

android.enableAapt2=false

它解决了我的错误。

UPD 2017-07-19 :它已修复并发布于com.android.tools.build:gradle:3.0.0-alpha7

答案 1 :(得分:1)

版本3的Gradle插件使用新的AAPT,它有一些错误 在阅读了有关错误跟踪器的一些问题之后,我发现Gradle有完全禁用AAPT2的选项:android.enableAapt2=false

同样从发行说明到alpha5:

  

AAPT2。我们将继续稳定AAPT2,从而实现增量资源处理。如果您的构建因资源而失败   处理问题,请给我们发错误报告。暂时禁用   AAPT,在gradle.properties文件中设置android.enableAapt2 = false   Roboelectric目前与AAPT2不兼容

答案 2 :(得分:0)

我遇到同样的问题,将Android Studio降级到之前版本的canary5,并在build.gradle中编写以下内容

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
    ...