Ошибка андроидной студии 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 устраняет эту проблему.