Jetifier工具用作与Android Studio bundle 在一起的AndroidX迁移工具的一部分。但是,该工具存在一个问题,此处概述:https://issuetracker.google.com/issues/113224601

在某些库上运行Jetifier时,错误消息如下所示(一个特定的库不断为多个用户弹出:org.eclipse.jdt.core):

Failed to transform '/path/to/library/org.eclipse.jdt.core-3.10.0.jar' using Jetifier.
Reason: The type does not support '.' as package separator!

这个问题已经在Jetifier工具本身中修复了一段时间,但是修复的版本尚未包含在任何Android Studio更新中(甚至是最新的canary版本)。

我可以确认运行独立的Jetifier可以转换有问题的库,但是我不知道如何将这些转换后的库添加到我们的项目中。我不由自主地想到了两种方法来实现向AndroidX的迁移:
  • 在每个库上运行独立工具,并指示Gradle使用这些版本(我可能需要告诉Gradle任务不要在其上运行Jetifier)
  • 指示Gradle任务使用独立工具代替Android Studio随附的工具。

  • 非常感谢获得上述建议的修复程序的任何帮助(或者,如果有其他方法,我很想知道)。 Android Gradle构建系统的内部异常复杂,我确实需要一些专家的帮助才能克服这一障碍。

    这对我们来说是一个严重的障碍,因为我们希望在开发过程中开始迁移我们的应用程序。在迁移过程中,我们需要解决很多事情,并且在工具最终更新时准备“翻转开关”将有助于使我们的发布保持正常。

    谢谢!

    最佳答案

    实际上,在我链接的同一线程中,有一个workaround:


    buildscript {
        dependencies {
            classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
        }
    }
    

    因此,我想现在您可以在构建脚本中指定Jetifier的最新版本。

    在发布此消息之前,我确实应该一直滚动到该线程的底部,但是现在希望人们可以更清楚地看到此解决方法。

    更新

    似乎此解决方法在启用DataBinding的情况下不能与一起使用。看起来新的Jetifier工具正在尝试在旧版本上运行:



    更新2(2018年11月20日):

    有一个针对Jetifier的问题的变通办法,它试图自己对being released in AGP 3.3.0-rc01 and 3.4.0-alpha04进行Jetify。开发人员增加了将JetJet列入黑名单的功能。在gradle.properties文件中,添加以逗号分隔的正则表达式列表,以匹配您不希望Jetifier触摸的文件。例如:
    android.jetifier.blacklist = doNot.*\\.jar
    将排除/path/to/doNotJetify.jar

    08-04 06:25