独立的 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> |
否 | 日志级别。允许的值为
|
-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 编写的后续类。
要使用自定义配置文件
- 从工具的
jetifier-core-*.jar
文件中提取default.generated.config
文件并保存。 - 对您的配置文件副本进行任何必要的修改。
- 使用
-c
标志将您的文件传递给该工具。
例如
./jetifier-standalone -i libraryToProcess.aar -o result.aar -c myCustomMapping.config