J'ai des problèmes avec Bouncycastle, qui ne surviennent que lors de l'exécution du :lint
tâche.
Généralement, il semble être un Java 9 byte-code version 53.0/ ASM version conflit.
Voici les dépendances:
// https://mvnrepository.com/artifact/org.bouncycastle
implementation "org.bouncycastle:bcprov-jdk15on:1.64"
implementation "org.bouncycastle:bcpkix-jdk15on:1.64"
Ce qui cause le :lint
tâche pour générer des erreurs de traitement:
> Task :mobile:lint
Error processing bcpkix-jdk15on-1.64.jar:META-INF/versions/9/module-info.class: broken class file? (This feature requires ASM6)
Error processing bcprov-jdk15on-1.64.jar:META-INF/versions/9/module-info.class: broken class file? (This feature requires ASM6)
META-INF/versions/9/module-info.class: fichier de classe cassé? (Cette fonctionnalité nécessite ASM6)
Un "fichier de classe cassé" est probablement un faux message d'erreur, il ne peut tout simplement pas décoder module-info.class
. La question est: comment fournir ASM6? Comme cela ne se produit pas sur les anciennes versions (voir ma tentative de réponse), la seule réponse acceptable devrait être pour la version actuelle 1.64
.
Le fichier module-info.class
fait partie du système de modules Java) qui a été introduit depuis Java 9. Selon ce numéro on Android IssueTracker, le bogue a été corrigé depuis Android Studio 3.4.
Comme déjà mentionné, cela a été introduit dans Java 9, que Android ne prend pas en charge. Vous pouvez simplement utiliser packagingOptions
pour supprimer ces classes.
Android {
packagingOptions {
exclude "**/module-info.class"
}
}
Cela ne devrait pas affecter le code réellement exécuté et devrait également supprimer les classes pour les vérifications de lint car lint travaille sur le bytecode.