erreur Android Studio 3.0: attribut de style '@Android: attr/windowEnterAnimation' introuvable
J'avais suivi les étapes de la migration vers la mise à jour Android Studio 3.0.
build.gradle
flavorDimensions 'dimensionless'
D:\R\merchant\projapp\popuplibrary\build\intermediates\bundles\debug\res\values \ values.xml Erreur: (28, 5) erreur: l'attribut de style '@Android: attr/windowEnterAnimation' est introuvable.
C:\Users\user.gradle\caches\transforms-1\files-1.1\appcompat-v7-25.3.1.aar\f7bb6db2aa55d14c3d1c9dd8d49e03\res\values \ values. values. Erreur: Java.util.concurrent.ExecutionException: com.Android.tools.aapt2.Aapt2Exception: erreur AAPT2: consultez les journaux pour plus de détails
Erreur: L'exécution a échoué pour la tâche ': popuplibrary: processDebugAndroidTestResources' . Impossible d'exécuter aapt
Face à un problème identique, mais c’est la bibliothèque apccompat qui crée également un problème dans mon cas.
L'attribut de style '@Android: attr/windowEnterAnimation' est introuvable
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
application build.gradle:
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')
}
Ce problème est décrit dans le guide de migration pour Android Gradle Plugin 3.0.0 .
Utilisation incorrecte des symboles de référence de ressource @
AAPT2 génère maintenant des erreurs de construction lorsque vous omettez ou que vous ne placez pas correctement les symboles de référence de ressource (
@
). Par exemple, considérez si vous omettez le symbole lorsque vous spécifiez un attribut de style, comme indiqué ci-dessous:<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <!-- Note the missing '@' symbol when specifying the resource type. --> <item name="colorPrimary">color/colorPrimary</item> </style>
Lors de la construction du module, AAPT2 renvoie maintenant l'erreur de construction suivante:
ERROR: expected color but got (raw string) color/colorPrimary
De plus, considérez si vous incluez de manière incorrecte le symbole lors de l'accès à une ressource à partir de l'espace de noms Android, comme indiqué ci-dessous:
... <!-- When referencing resources from the 'Android' namespace, omit the '@' symbol. --> <item name="@Android:windowEnterAnimation"/>
Lors de la construction du module, AAPT2 renvoie maintenant l'erreur de construction suivante:
Error: style attribute '@Android:attr/windowEnterAnimation' not found
Si vous n'avez pas commis l'erreur décrite dans la seconde moitié, c'est peut-être une ancienne version de appcompat-v7 qui est à blâmer.
Le bon
Mettez à jour les bibliothèques de support les plus récentes en choisissant 25.4.0, 26.1.0 ou 27.0.0. Assurez-vous que vous correspondez à compileSdkVersion
.
Remarque: Si vous choisissez une mise à jour vers une version antérieure à 27.0.0, vous pouvez rencontrer ce problème .
Le mauvais
Si, pour une raison quelconque, vous êtes coincé avec la version 25.3.1 ou une version antérieure, vous pouvez désactiver AAPT2 .
Si vous rencontrez des problèmes lors de l'utilisation de AAPT2, vous pouvez le désactiver en définissant
Android.enableAapt2=false
dans votre fichiergradle.properties
et en redémarrant le démon Gradle en exécutant./gradlew --stop
à partir de la ligne de commande.
Essayez d'utiliser le sous-projets {} block dans Android/build.gradle et définissez les compiles Android récentes compileSdkVersion et buildToolsVersion utilisées dans le projet principal afin que les sous-projets utilisent également ces versions.
Exemple
subprojects {
afterEvaluate {project ->
if (project.hasProperty("Android")) {
Android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
}
}
} }
Ajouter Android.enableAapt2=false
dans le fichier gradle.properties
résout ce problème.