独立 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 |
否 | 以反向模式(“反 Jetifier”)操作。 |
-rebuildTopOfTree ,--rebuildTopOfTree |
否 | 根据生成的 POM 文件重建 Maven 发行版的 ZIP。 如果设置,则假定所有重写的库都是 Support Library 的一部分。Jetifier 不需要此选项。 |
-s , --strict |
否 | 规则缺失时不回退;而是抛出错误。 |
-stripSignatures ,--stripSignatures
|
否 | Jetifier 已签名的库时不抛出错误;而是去除签名文件。 |
-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