web-dev-qa-db-fra.com

Androidx Jetifier - Y a-t-il un moyen d'ignorer un .jar?

Essayer de mettre à jour mon application aux dépendances androidX. Suivi des instructions ici et la compilation a échoué. L'erreur est venue de JetifyTransform tâche _ Échec de traitement d'une certaine dépendance .jar (FYI - Samsungs Spass SDK ):

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptGenerateStubsStandardNo_vendorDebugKotlin'.
> Could not resolve all artifacts for configuration ':app:standardNo_vendorDebugCompileClasspath'.
   > Failed to transform file 'pass-v1.2.2.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
      > Failed to transform '/Users/hanandann/StudioProjects/ArnakPaymentsAndroid/Payments/app/libs/pass-v1.2.2.jar' using Jetifier. Reason: null. (Run with --stacktrace for more details.)
   > Failed to transform file 'pass-v1.2.2.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
      > Failed to transform '/Users/hanandann/StudioProjects/ArnakPaymentsAndroid/Payments/app/libs/pass-v1.2.2.jar' using Jetifier. Reason: null. (Run with --stacktrace for more details.)

Essayer de décider avec jetifier-standalone L'outil avait des résultats similaires:

Hanans-MacBook-Pro:bin hanandann$ ./jetifier-standalone -i /Users/hanandann/StudioProjects/.../app/libs/pass-v1.2.2.jar -o /Users/hanandann/StudioProjects/.../app/libs/pass-v1.2.2jet.jar 
Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 8
    at org.objectweb.asm.ClassReader.readFrameType(ClassReader.Java:2313)
    at org.objectweb.asm.ClassReader.readFrame(ClassReader.Java:2269)
    at org.objectweb.asm.ClassReader.readCode(ClassReader.Java:1448)
    at org.objectweb.asm.ClassReader.readMethod(ClassReader.Java:1126)
    at org.objectweb.asm.ClassReader.accept(ClassReader.Java:698)
    at org.objectweb.asm.ClassReader.accept(ClassReader.Java:500)
    at com.Android.tools.build.jetifier.processor.transform.bytecode.ByteCodeTransformer.runTransform(ByteCodeTransformer.kt:39)
    at com.Android.tools.build.jetifier.processor.Processor.visit(Processor.kt:443)
    at com.Android.tools.build.jetifier.processor.archive.ArchiveFile.accept(ArchiveFile.kt:49)
    at com.Android.tools.build.jetifier.processor.Processor.visit(Processor.kt:425)
    at com.Android.tools.build.jetifier.processor.archive.Archive.accept(Archive.kt:76)
    at com.Android.tools.build.jetifier.processor.Processor.transformLibrary(Processor.kt:421)
    at com.Android.tools.build.jetifier.processor.Processor.transform(Processor.kt:247)
    at com.Android.tools.build.jetifier.processor.Processor.transform$default(Processor.kt:234)
    at com.Android.tools.build.jetifier.standalone.Main.run(Main.kt:157)
    at com.Android.tools.build.jetifier.standalone.Main$Companion.main(Main.kt:109)
    at com.Android.tools.build.jetifier.standalone.Main.main(Main.kt)

Maintenant, je ne me dérange pas vraiment que SDK ne soit pas jeté, alors j'ai essayé de définir Android.enableJetifier=false dans mon gradle.properties Fichier, mais la compilation a échoué à nouveau pour une raison différente- SupportMapFragment _ n'est pas compatible avec Androidx pourtant, comme indiqué ici

Donc je suis coincé. Avec Jety the .jar ne se transformera pas. avec elle - supportmapfarg est incompatible.

Aucune suggestion?

P.s. Tu sais ce qui serait bien? S'il y avait une option ignore pour la fonction de réglage

7
Mardann

Si vous avez besoin d'ignorer un fichier .jar spécifique de la reprise. Vous pouvez ajouter le nom de fichier dans la gradle.properties comme sur la dernière ligne de cet exemple.

Android.useAndroidX=true
Android.enableJetifier=true
Android.jetifier.blacklist=liblinphone-4.0.1-debug-symbols.jar
1
stevyhacker