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的迁移:
非常感谢获得上述建议的修复程序的任何帮助(或者,如果有其他方法,我很想知道)。 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