Jetifier

独立 Jetifier 工具将依赖于 support-library 的库迁移到改为依赖于等效的 AndroidX 包。该工具使您可以直接迁移单个库,而不是使用捆绑在 Android Studio 中的 Android Gradle 插件。

安装 Jetifier

要安装 Jetifier,下载 zip 文件 并解压缩它。您的设备必须安装了 Java 1.8 或更高版本。

用法

要处理库,请传递当前库的路径和工具应创建的输出文件的路径。Jetifier 支持 JAR、AAR 和 ZIP 文件,包括嵌套的存档。

./jetifier-standalone -i <source-library> -o <output-library>

选项

下表列出了 Jetifier 工具命令的可用选项

选项 必需? 描述
-i, --input <path> 输入库的路径(JAR、AAR 或 ZIP)。
-o, --output <path> 输出文件的路径。如果文件已存在,Jetifier 会覆盖它。
-c, --config <path> 可选的自定义配置文件的路径。
-l, --log <level> 日志记录级别。允许的值是
  • 错误
  • 警告
  • 信息
  • 详细
如果未指定,则默认为“警告”。
-r 以反向模式(“取消 jetification”)操作。
-rebuildTopOfTree,
--rebuildTopOfTree
根据生成的 POM 文件重建 Maven 分发的 ZIP。
如果设置,所有重写的库都假定是 Support Library 的一部分。无需 jetification。
-s, --strict 规则丢失时不回退;改为抛出错误。
-stripSignatures,
--stripSignatures
jetify 已签名库时不抛出错误;改为删除签名文件。
-t, -timestamp <arg> 要用于归档条目作为其修改时间的时戳策略。值:keepPrevious(默认)epoch 或 now。

示例

以下示例在当前目录中的库 libraryToProcess.aar 上运行实用程序,并将输出写入同一目录中的 result.aar

./jetifier-standalone -i libraryToProcess.aar -o result.aar

用法说明

Jetifier 会迁移指向 android.support.* 包的 Java、XML、POM 和 ProGuard 引用,将其更改为指向相应的 androidx.* 包。

由于 android.support.* 的 ProGuard 通配符并不总是直接映射到 androidx.* 包,因此 Jetifier 会生成所有合格的替换。

如果 android.support.* 包中的类型不来自任何 Support Library 工件,Jetifier 仍然会迁移该类型,只要它有映射。但是,此迁移不能保证有效,因为可能没有足够通用的映射规则来涵盖所有自定义类型。

高级用法

Jetifier 实用程序支持一些高级用例。

反向模式

如果传递 -r 标志,则实用程序以反向模式运行。在此模式下,实用程序会将 AndroidX API 转换为 Support Library 等效项。如果您正在开发使用 AndroidX API 但也需要分发使用 Support Library 的版本的库,则反向模式很有用。

示例

以下示例在当前目录中的库 myAndroidXLib.aar 上以反向模式运行实用程序,并将输出写入同一目录中的 supportLibVersion.aar

./jetifier-standalone -r -i myAndroidXLib.aar -o supportLibVersion.aar

自定义配置文件

Jetifier 工具使用配置文件将 Support Library 类映射到其 AndroidX 等效项。如有必要,您可以制作一个自定义配置文件来更改此映射。您甚至可以将不在 Support Library 中的类添加到映射中。例如,您可以修改映射以将您自己的类之一替换为使用 AndroidX 编写的后继类。

要使用自定义配置文件

  1. 从实用程序的 jetifier-core-*.jar 文件中提取文件 default.generated.config 并保存。
  2. 对配置文件的副本进行必要的编辑。
  3. 将您的文件使用 -c 标志传递给实用程序。

例如

./jetifier-standalone -i libraryToProcess.aar -o result.aar -c myCustomMapping.config