【问题标题】:Stop working project with vector drawables after update build.gradle on API < 21在 API < 21 上更新 build.gradle 后停止使用矢量绘图的项目
【发布时间】:2017-07-12 11:43:46
【问题描述】:

我有工作项目。

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

我的 gradle 文件中有:

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

我也调用活动:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

应用程序完美运行。现在改为:

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

执行gradle clean assembleDebug

应用程序继续在 API > 20 的设备上运行。但对于 API Resources$NotFoundException: Resource ID #0x7f080058(0x7f080058 是可绘制的 abc_vector_test)。

为什么?

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

【问题讨论】:

标签: android android-gradle-plugin android-vectordrawable


【解决方案1】:

我添加到gradle.properties

android.enableAapt2=false

它解决了我的错误。

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

【讨论】:

    【解决方案2】:

    版本 3 的 Gradle 插件使用新的 AAPT,但存在一些错误。
    在阅读了 bug tracker 上的一些问题后,我发现 Gradle 有完全禁用 AAPT2 的选项:android.enableAapt2=false

    还有从发行说明到 alpha5:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-12
        • 1970-01-01
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多