Les problèmes et solutions rencontrés lors de la mise à niveau vers Android Studio3.0, Android Studio3.0 sont une grosse mise à jour cette fois. Après la mise à jour, j'ai constaté que la compilation avait en effet été grandement améliorée, ainsi que les derniers outils de débogage des erreurs.En bref, la nouvelle version de Google est toujours très sincère.
Les problèmes rencontrés
1 、 saveurDimensions
Journal des erreurs
Erreur: toutes les saveurs doivent maintenant appartenir à une dimension de saveur nommée. En savoir plus sur https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
Raison: gradle3.0 doit utiliser flavourDimensions pour l'empaquetage multi-version, modifiez comme suit:
android {
//…
defaultConfig {
//…
flavourDimensions "dimen"
}
}
Ensuite, effectuez les modifications correspondantes dans productFlavors
productFlavors {productA {
dimension "
dimen "} productB {dimension "dimen"}
}
Configurer plusieurs dimensions de saveur
android {
//…
defaultConfig {
//…
flavourDimensions "dimenA", "dimenB"
}
}
productFlavors {productA
{dimension "dimenA"}
productB {dimension "dimenB"}
productC {dimension "dimenA"}
}
2.apk nommé
journal des erreurs
Impossible de définir la valeur de la propriété en lecture seule 'outputFile' pour ApkVariantOutputImpl_Decorated {apkData = Main {type = MAIN, fullName = busDebug, filters = []}} de type com.android.build.gradle.internal.api.ApkVariantOutputImpl. Fichier ouvert
Le code précédent:
applicationVariants.all {variant ->
variant.outputs.each {output ->
def outputFile = output.outputFile
if (outputFile! = null && outputFile.name.endsWith ('. apk')) {
def fileName = "XXX- rée fa u l t Co n fje g. v e r s i o n Co de - default C onfig. version C ode - {defaultConfig.versionName} - r e l e a s e Tje m e ( ) - release T ime () - {productFlavors.name [0]} "
if (variant.buildType.name == 'release') {
fileName + = '.apk'
} else if (variant.buildType.name == 'debug' ) {
fileName + = '_debug.apk'
} else {
fileName + = '_other.apk'
}
output.outputFile = nouveau fichier (outputFile.parent, fileName)
}
}
}
Remplacez gradle3.0 chacun par tout, output.outputFile par outputFileName, aucun nouveau fichier n'est nécessaire, le code modifié:
applicationVariants.all {variant ->
variant.outputs.all {
def fileName = "XXX- rée fa u l t Co n fje g. v e r s i o n Co de - default C onfig. version C ode - {defaultConfig.versionName} - r e l e a s e Tje m e ( ) - release T ime () - {productFlavors.name [0]} "
if (variant.buildType.name == 'release') {
fileName + = '.apk'
} else if (variant.buildType.name == 'debug' ) {
fileName + = '_debug.apk'
} else {
fileName + = '_other.apk'
}
outputFileName = fileName
}
}
Il convient de noter que lorsque vous utilisez Build-> Generate Signed APK ..., le package apk généré sera placé dans un dossier nommé d'après le nom du canal
3.Les processeurs d'annotation doivent être déclarés explicitement maintenant.Veuillez les ajouter à la configuration annotationProcessor.
Journal des erreurs
Erreur: l'exécution a échoué pour la tâche «: app: javaPreCompilePreProductDebug».
Les processeurs d'annotations doivent maintenant être déclarés explicitement. Les dépendances suivantes sur le chemin de classe de compilation contiennent un processeur d'annotations. Veuillez les ajouter à la configuration annotationProcessor.
- butterknife-7.0.1.jar (butterknife-7.0.1.jar)
Vous pouvez également définir android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true pour continuer avec le comportement précédent. Notez que cette option est obsolète et sera supprimée à l'avenir.
Voir https://developer.android.com/r/tools/annotation-processor-error-message.html pour plus de détails.
修复 方案
android {
//…
defaultConfig {
//…
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
}
4.Aapt2Exception
Journal des erreurs
Erreur: (113, 5) erreur: attribut de style «@android: attr / windowEnterAnimation» introuvable.
Erreur: (113, 5) erreur: attribut de style «@android: attr / windowExitAnimation» introuvable.
…
Erreur: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: Erreur AAPT2: vérifiez les journaux pour plus de détails
Erreur: java.util.concurrent.ExecutionException: com.android. tools.aapt2.Aapt2Exception: erreur AAPT2: vérifier les journaux pour plus de détails
Erreur: com.android.tools.aapt2.Aapt2Exception: erreur AAPT2: vérifier les journaux pour plus de détails
Erreur: l'exécution a échoué pour la tâche ': app: processPreProductDebugResources'.
Échec de l'exécution de aapt
Solution Ajoutez le code suivant dans gradle.properties, désactivez la compilation aapt2
android.enableAapt2 = false
5. Autre
La nouvelle version de gradle n'a pas besoin de configurer buildToolsVersion
les dépendances sont comme ça lors de l'importation du package
{
implementation fileTree (include: ['* .jar'], dir: 'libs')
androidTestImplementation…
projet d'
implémentation… fichiers d'
implémentation… implémentation…
testImplementation'junit: junit: 4.12 '
}