web-dev-qa-db-fra.com

android studio 3.1 Attention: la règle `-keep public class * étend Java.lang.annotation.Annotation {

j'ai récemment mis à niveau Android Studio, mais je ne parviens pas à trouver la source du problème suivant signalé dans Android studio 3.1:

Warning: The rule `-keep public class *extends Java.lang.annotation.Annotation {

 enter image description here

 enter image description here

l'avertissement semble être coupé peut-être et informations manquantes. mais cela ressemble à un problème de proguard bien que je reçois cet avertissement lors de la construction de la variante de débogage. J'ai vérifié mes fichiers de proguard et je n'ai pas de ligne qui correspond exactement à cela. J'ai cherché dans tout le projet. des idées sur la cause racine?

39
j2emanue

Comme mentionné dans les commentaires de la question par @ arcone1, @Vincent Mattana et confirmés par @random, le problème est résolu dans Android Studio 3.2.

Depuis le numéro dans Google Issue Tracker :

Pour clarifier, il s’agit d’un avertissement et non d’une erreur de la part de R8, que nous utilisons pour calculer la liste des classes du dex principal, dans la variante multidex héritée. Cela n'affecte pas la sortie et ne devrait pas causer d'échec de construction ni d'exécution.
Je travaille sur un correctif pour changer cette règle de garde en "-keep public class * implémente Java.lang.annotation.Annotation", qui est sémantiquement identique et supprime l'avertissement.

Donc, ignorez-le pour le moment ou allez saigner avec Canary (marchez à vos risques et périls).

UPDATE: 3.2 est sorti !

21
Aba

Il manque un espace entre le caractère générique * et le mot clé extends. L'avertissement lui-même ne provient probablement pas de ProGuard mais du rétrécisseur intégré de Google.

Si vous ne le trouvez pas dans votre projet, il s'agit probablement d'une règle endommagée d'un fichier client Proguard inclus dans les fichiers aar dépendants.

17
T. Neidhart

J'ai eu le même problème à cause du paramètre "multiDexEnabled true" dans gradle defaultConfig.

J'ai résolu ce problème en ajoutant la dépendance multidex "implementation" com.Android.support:multidex:1.0.3 '"

Android {
defaultConfig {
    ...
    multiDexEnabled true
}
...
}

dependencies {
  implementation 'com.Android.support:multidex:1.0.3'
}

Référence:https://developer.Android.com/studio/build/multidex

9
mridul

J'ai supprimé le "multiDexEnabled true" de la version par défaut de l'application defaultConfig et l'avertissement disparaît

defaultConfig {
    ...

    //multiDexEnabled true
}

dexOptions {
    javaMaxHeapSize "Xg"
}

bonne chance)

3
Hovanes Mosoyan

la classe Android.support.annotation.Keep est ce que j'utilise (Android Studio 3.1.2) ...

-keep @interface Android.support.annotation.Keep
-keep @Android.support.annotation.Keep class *
-keepclasseswithmembers class * {
    @Android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
    @Android.support.annotation.Keep <methods>;
}

il y a d'autres drapeaux pour contrôler les annotations à garder:

-keepattributes RuntimeVisibleAnnotations
-keepattributes AnnotationDefault
-keepattributes *Annotation*

on peut obtenir le résultat brut en exécutant ./gradlew assembleRelease dans l’onglet Terminal.

lorsque rien dans la configuration ProGuard du projet ne fait référence à Annotation, cet avertissement peut provenir des règles "consommateurs" de certaines bibliothèques référencées, à masquer au moment de la construction.

il semble donc être un avertissement inoffensif, on peut éventuellement le désactiver:

-dontwarn Java.lang.annotation.Annotation
2
Martin Zeitler
  1. ouvrir le fichier build.gradle.
  2. supprimez «multiDexEnabled true».
  3. reconstruire app.
2
Ahamadullah Saikat

Version Gradle: 3.1.4

MultiDex: Activé

Dans mon cas, j'ai oublié d'ajouter une traduction pour certaines ressources de chaîne. Aucune erreur/avertissement après l'ajout.

0
activesince93

Ce problème survient lorsque vous téléchargez une nouvelle version de mise à niveau sur Google Play Store et, après le téléchargement, cliquez sur Conserver, puis sur Soumettre. Ne cliquez pas sur Conserver, il suffit de télécharger et de soumettre. Votre fichier apk a été transféré avec succès et conserver le fichier est automatiquement supprimé et défini en mode de désactivation.

N'oubliez pas: assurez-vous de mettre tous les détails de la nouvelle mise à jour différents de ceux de la version précédente.

0
Pradeep Sheoran