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

Yur*_*rev 7 android android-gradle-plugin 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 = []
}
Run Code Online (Sandbox Code Playgroud)

我也打电话给活动:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
Run Code Online (Sandbox Code Playgroud)

应用程序完美.现在改为:

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

执行gradle clean assembleDebug.

应用程序继续适用于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

Yur*_*rev 8

我加入了gradle.properties

android.enableAapt2=false
Run Code Online (Sandbox Code Playgroud)

它解决了我的错误.

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


DeK*_*szn 1

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

另外从发行说明到 alpha5:

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