Jetifier

独立的 Jetifier 工具将依赖支持库的库迁移为转而依赖等效的 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> 日志级别。允许的值为
  • error
  • warning
  • info
  • verbose
如果未指定,默认为“warning”。
-r 以反向模式(“去 Jetification”)操作。
-rebuildTopOfTree,
--rebuildTopOfTree
根据生成的 POM 文件重建 Maven 分发的 ZIP。
如果设置,所有重写的库都被假定为 Support Library 的一部分。Jetification 不需要此项。
-s, --strict 当规则缺失时不要回退;而是抛出错误。
-stripSignatures,
--stripSignatures
对已签名库进行 jetifying 时不抛出错误;而是剥离签名文件。
-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