独立 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 编写的后继类。
要使用自定义配置文件
- 从实用程序的
jetifier-core-*.jar
文件中提取文件default.generated.config
并保存。 - 对配置文件的副本进行必要的编辑。
- 将您的文件使用
-c
标志传递给实用程序。
例如
./jetifier-standalone -i libraryToProcess.aar -o result.aar -c myCustomMapping.config