Ошибка андроидной студии 3.0: атрибут стиля '@android: attr/windowEnterAnimation' не найден
Я выполнил шаги по переносу на обновление Android версии 3.0.
build.gradle
flavorDimensions 'dimensionless'
D:\Р\торговцем\projapp\popuplibrary\построить\промежуточные\расслоения\отладки\Рез\значения\values.xml Ошибка: (28, 5) ошибка: атрибут стиля "@android: attr/windowEnterAnimation" не найден.
C:\Users\user.gradle\кэшей\трансформирует-1\файлы-1.1\AppCompat-v7-25.3.1.aar\f7bb6db2aa55d14683d1c9ddd8d49e03\Рез\значения\values.xml Ошибка: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: ошибка AAPT2: проверьте журналы для получения более подробной информации. Ошибка: выполнение не выполнено для задачи: popuplibrary: processDebugAndroidTestResources. Не удалось выполнить команду aapt
Одиночная проблема, но это библиотека apccompat, также создающая проблему в моем случае.
атрибут стиля '@android: attr/windowEnterAnimation' не найден
gradlewrapper:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
build.gradle app:
productFlavors {
dev {
applicationIdSuffix '.dev'
versionName "1.0"
versionNameSuffix '-dev'
}
qa {
applicationIdSuffix '.qa'
versionName "1.0"
versionNameSuffix '-qa'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
//Butter Knife
compile 'com.jakewharton:butterknife:8.7.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
compile project(':popuplibrary')
}
Ответы
Ответ 1
Эта проблема описана в руководстве по миграции для Android Gradle Плагин 3.0.0.
Неправильное использование ссылочных символов @resource
Теперь AAPT2 выдает ошибки сборки, когда вы опускаете или неправильно размещаете ссылочные символы ресурсов (@
). Например, рассмотрите, опускаете ли вы символ при указании атрибута стиля, как показано ниже:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<!-- Note the missing '@' symbol when specifying the resource type. -->
<item name="colorPrimary">color/colorPrimary</item>
</style>
При создании модуля AAPT2 теперь выдает следующую ошибку сборки:
ERROR: expected color but got (raw string) color/colorPrimary
Кроме того, рассмотрите, если вы неправильно включили символ при доступе к ресурсу из пространства имен android, как показано ниже:
...
<!-- When referencing resources from the 'android' namespace, omit the '@' symbol. -->
<item name="@android:windowEnterAnimation"/>
При создании модуля AAPT2 теперь выдает следующую ошибку сборки:
Error: style attribute '@android:attr/windowEnterAnimation' not found
Если вы не допустили ошибку, описанную во второй половине, то, возможно, виновата старая версия appcompat-v7.
Хороший
Обновление до новых библиотек поддержки, выберите 25.4.0 или 26.1.0 или 27.0.0. Убедитесь, что вы соответствуете compileSdkVersion
.
Примечание. Если вы решите обновить до более чем 27.0.0, вы можете запустить эту проблему.
Плохой
Если по какой-то причине вы застряли с 25.3.1 или старше, вы можете отключить AAPT2.
Если у вас возникли проблемы при использовании AAPT2, вы можете отключить его, установив android.enableAapt2=false
в ваш файл gradle.properties
и перезапустив демона Gradle, запустив ./gradlew --stop
из командной строки.
Ответ 2
Попробуйте использовать блок subprojects {} в android/build.gradle и установите последние android compileSdkVersion и buildToolsVersion, используемые в основном проекте, чтобы подпроекты также использовали эти версии.
пример
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
}
}
} }
Ответ 3
Добавление android.enableAapt2=false
в файл gradle.properties
устраняет эту проблему.