如何强制库使用androidX约束布局而不是android.support约束布局

时间:2018-11-02 17:58:24

标签: android android-constraintlayout android-databinding androidx

我正在实现Android Layer-xdk library,但遇到了一些麻烦。构建时,出现以下错误:

error: cannot find symbol public final android.support.constraint.ConstraintLayout root;

该错误是由图层库中名为XdkUiMessageModelVhDefaultVBinding.java的类引起的。

这是导致错误的行:

public final android.support.constraint.ConstraintLayout root;

如果将鼠标悬停在红色的ConstraintLayout上,则会显示“无法解析符号ConstraintLayout”。

此类是由Android数据绑定库从xml xdk_ui_message_model_vh_default.xml

生成的

使用androidX约束布局

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="@dimen/xdk_ui_message_model_vh_avatar_padding"
    android:layout_marginLeft="@dimen/xdk_ui_message_model_vh_avatar_padding"
    android:layout_marginRight="@dimen/xdk_ui_message_model_vh_avatar_padding"
    android:layout_marginStart="@dimen/xdk_ui_message_model_vh_avatar_padding"
    android:layout_marginTop="@dimen/xdk_ui_message_model_vh_padding"
    android:layout_marginBottom="@dimen/xdk_ui_message_model_vh_padding"
    android:duplicateParentState="true" android:tag="layout/xdk_ui_message_model_vh_default_0" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools">

奇怪的是约束布局是根元素。我以为<layout>必须是根元素,而<data>则要与根UI布局元素同级,以便正确生成Binding类。我可能会误解了那部分。

有没有一种方法可以强制构建或生成代码以使用androidX?

或者,如果有人对导致问题的原因有任何澄清的信息,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我相信,如果将这两行添加到gradle.properties文件中,AS会为您解决兼容性问题,并使该库与您的代码一起使用,无论它们是否使用androidx。

android.useAndroidX=true
android.enableJetifier=true

enter image description here