在 API < 21 上更新 build.gradle 后停止使用矢量绘图的项目
Stop working project with vector drawables after update build.gradle on API < 21
我有工作项目。
- minSdkVersion 17
- com.android.tools.build:gradle:2.3.3
- gradle 4.1
- Android Studio 3 金丝雀 6
我的 gradle 文件中有:
defaultConfig {
vectorDrawables.useSupportLibrary = true
vectorDrawables.generatedDensities = []
}
我也打来activity:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
应用程序完美运行。现在改为:
- com.android.tools.build:gradle:3.0.0-alpha6
- 添加到存储库
google()
行
执行gradle clean assembleDebug
.
应用程序继续在 API > 20 的设备上运行。但是对于 API < 21(google android 模拟器)在启动应用程序时会崩溃。
我在 logcat 中看到错误:Resources$NotFoundException: Resource ID #0x7f080058
(0x7f080058 可绘制 abc_vector_test)。
为什么?
UPD 2017-07-19:已修复并在 com.android.tools.build:gradle:3.0.0-alpha7
中发布
我添加到 gradle.properties
行
android.enableAapt2=false
它解决了我的错误。
UPD 2017-07-19:已修复并在 com.android.tools.build:gradle:3.0.0-alpha7
中发布
我遇到了同样的问题,将 Android Studio 降级到以前的 canary5 版本并在 build.gradle
中写入以下内容
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
...
Gradle 版本 3 的插件使用新的 AAPT,但有一些错误。
在阅读错误跟踪器上的一些问题后,我发现 Gradle 有完全禁用 AAPT2 的选项:android.enableAapt2=false
也从发行说明到 alpha5:
AAPT2. We are continuing to stabilize AAPT2 which enables incremental resource processing. If your build fails due to resource
processing issue, please send us a bug report. To temporarily disable
AAPT, set android.enableAapt2=false in your gradle.properties file.
Roboelectric is currently not compatible with AAPT2
我有工作项目。
- minSdkVersion 17
- com.android.tools.build:gradle:2.3.3
- gradle 4.1
- Android Studio 3 金丝雀 6
我的 gradle 文件中有:
defaultConfig {
vectorDrawables.useSupportLibrary = true
vectorDrawables.generatedDensities = []
}
我也打来activity:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
应用程序完美运行。现在改为:
- com.android.tools.build:gradle:3.0.0-alpha6
- 添加到存储库
google()
行
执行gradle clean assembleDebug
.
应用程序继续在 API > 20 的设备上运行。但是对于 API < 21(google android 模拟器)在启动应用程序时会崩溃。
我在 logcat 中看到错误:Resources$NotFoundException: Resource ID #0x7f080058
(0x7f080058 可绘制 abc_vector_test)。
为什么?
UPD 2017-07-19:已修复并在 com.android.tools.build:gradle:3.0.0-alpha7
中发布我添加到 gradle.properties
行
android.enableAapt2=false
它解决了我的错误。
UPD 2017-07-19:已修复并在 com.android.tools.build:gradle:3.0.0-alpha7
中发布我遇到了同样的问题,将 Android Studio 降级到以前的 canary5 版本并在 build.gradle
中写入以下内容buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
...
Gradle 版本 3 的插件使用新的 AAPT,但有一些错误。
在阅读错误跟踪器上的一些问题后,我发现 Gradle 有完全禁用 AAPT2 的选项:android.enableAapt2=false
也从发行说明到 alpha5:
AAPT2. We are continuing to stabilize AAPT2 which enables incremental resource processing. If your build fails due to resource processing issue, please send us a bug report. To temporarily disable AAPT, set android.enableAapt2=false in your gradle.properties file.
Roboelectric is currently not compatible with AAPT2