【问题标题】:androidX jetifier - Is there a way to ignore jetifying a .JAR?androidX jetifier - 有没有办法忽略喷射.JAR?
【发布时间】:2019-04-23 14:50:06
【问题描述】:

尝试将我的应用程序更新为 androidX 依赖项。遵循指令here,编译失败。 错误来自 JetifyTransform 任务未能处理某个 .JAR 依赖项(仅供参考 - 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.)

尝试使用jetifier-standalone 工具进行jetify 有类似的结果:

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)

现在,我真的不介意 SDK 不被喷射,所以我尝试在我的 gradle.properties 文件中设置 android.enableJetifier=false,但由于不同的原因再次编译失败 - SupportMapFragment 不兼容androidX 尚未报道here

所以我被困住了。使用 jetify,.JAR 不会转换。与它 - SupportMapFarg 不兼容。

有什么建议吗?

附:你知道什么会很好吗?如果喷射功能有ignore 选项

【问题讨论】:

  • 我遇到了同样的错误,因为某些 lib jar 文件“格式错误”或其他原因,这是 Gradle 4 中的弃用警告和 Gradle 5 中的致命错误。降级到 Gradle 4 解决了这个问题。跨度>

标签: android androidx android-jetifier


【解决方案1】:

将此添加到gradle.properties:

android.jetifier.blacklist = pass

正如谷歌here的人们所建议的那样。

请注意 - 此功能是实验性的,不受支持。


更新-当前语法是@YaMiN 建议的android.jetifier.ignorelist={your.ignored.lib}

【讨论】:

  • 这对我有用并显示“警告:选项设置 'android.jetifier.blacklist=pass' 是实验性的,不受支持。”。谢谢。
  • 这完全没有任何作用。
  • Xamarin android 的任何等效选项?
  • 已弃用。
【解决方案2】:

目前android.jetifier.blacklist 已弃用。

它已在 Android Gradle 插件的 7.0 版中删除。 此属性已替换为android.jetifier.ignorelist

【讨论】:

    【解决方案3】:

    如果您只需要忽略 jetifier 中的特定 .jar 文件。您可以在 gradle.properties 中添加文件名,就像本示例的最后一行一样。

    android.useAndroidX=true
    android.enableJetifier=true
    android.jetifier.blacklist=liblinphone-4.0.1-debug-symbols.jar
    

    【讨论】:

      【解决方案4】:

      在项目的 gradle.properties 中添加这个: android.jetifier.blacklist =xx.aar,yy.jar 用逗号分割黑名单

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 1970-01-01
        • 2014-07-25
        • 2020-07-02
        • 2015-04-17
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-10
        相关资源
        最近更新 更多