android:enableJetifier=true 再学习

25 阅读1分钟

当我们遇到类似这种问题

connectivity_plus:debugRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues.
     Set `android.useAndroidX=true` in the `gradle.properties` 

我们一般会直接添加如下的配置 但是一直没有深究这两个属性的意义

android.useAndroidX=true      
android.enableJetifier=true

android.useAndroidX=true 这个属性执行项目开启AndroidX

android.enableJetifier=true 的作用

当启用该配置后,Gradle 会在构建过程中对所有第三方库(包括本地库和远程依赖)进行字节码转换:
把库中引用的 android.support.xxx 类自动替换为对应的 androidx.xxx 类。
把库的 build.gradle 中声明的旧版 Support 库依赖(如 com.android.support:support-v4)自动替换为 AndroidX 依赖(如 androidx.core:core)。

但是如果有如下情况还是需要手动去修改:

Jetifier 主要处理字节码和依赖声明,但某些特殊情况可能转换失败:
第三方库中通过反射动态引用 android.support 类(如 Class.forName("android.support.v4.app.Fragment"))。
资源文件(如 XML)中硬编码旧版类名(如自定义 View 的全类名)。
此时需要手动修改,或联系库作者升级到 AndroidX 版本。