Остановите рабочий проект с векторными объектами рисования после обновления build.gradle в API < 21
У меня есть рабочий проект.
- 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
,
Приложение продолжает работать на устройствах с 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
3 ответа
Плагин Gradle из версии 3 использует новый AAPT, в котором есть некоторые ошибки.
После прочтения некоторых проблем с трекером ошибок я обнаружил, что в Gradle есть опция для полного отключения AAPT2: android.enableAapt2=false
Также от примечаний к выпуску до alpha5:
AAPT2. Мы продолжаем стабилизировать AAPT2, что обеспечивает дополнительную обработку ресурсов. Если ваша сборка не удалась из-за проблем с обработкой ресурсов, отправьте нам отчет об ошибке. Чтобы временно отключить AAPT, установите android.enableAapt2=false в файле gradle.properties.
Roboelectric в настоящее время не совместим с AAPT2
Я добавляю в 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'
...