当库使用 android 组件并且应用程序使用 androidx 组件时,Jetifier 不工作

Jetifier not working when library uses android component and app uses androidx component

我有一个使用 AncdroidX 组件的应用程序。 Jetifier 已启用

android.enableJetifier=true
android.useAndroidX=true

现在我正在添加第三方库,它使用 android 库而不是 AndroidX (com.android.support).

库依赖项

implementation "com.android.support:appcompat-v7:28.0.0"

应用程序依赖

implementation "androidx.appcompat:appcompat:1.0.0"

我收到第三方库的构建错误

error: package android.support.v7.widget does not exist
    public final android.support.v7.widget.Toolbar toolbarFragment;
                                          ^

当我检查依赖项时,它显示为

+--- com.android.databinding:baseLibrary:3.1.4 -> androidx.databinding:databinding-common:3.2.1
+--- androidx.appcompat:appcompat:1.0.0-rc01 -> 1.0.0 (*)
+--- com.google.android.material:material:1.0.0-rc01 -> 1.0.0 (*)

实际上该应用正在生成绑定 类,而 Jetifier 无法迁移生成的 类 中的代码。为了解决这个问题,图书馆提供者需要把

android.databinding.enableV2=true

在他们的 gradle.properties 文件中。

来自Android Documentation

Binding classes for library modules are compiled and packaged into the corresponding Android Archive (AAR) file. App modules that depend on those library modules no longer need to regenerate the binding classes.