Как заставить библиотеку использовать androidX constraintlayout вместо android.support constraintlayout - PullRequest
0 голосов
/ 02 ноября 2018

Я внедряю библиотеку Android Layer-xdk и столкнулся с небольшим затруднением. При сборке я получаю следующую ошибку:

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> родственным элементом для корневого макета пользовательского интерфейса, чтобы класс Binding был сгенерирован правильно. Я, возможно, неправильно понял эту часть, хотя.

Есть ли способ, которым я могу заставить любой сборочный или генерирующий код использовать androidX?

Или, если у кого-либо есть какая-либо уточняющая информация о том, что является причиной проблемы, я был бы очень признателен.

1 Ответ

0 голосов
/ 27 января 2019

Я полагаю, что если вы добавите эти две строки в файл gradle.properties, AS позаботится о проблемах совместимости для вас и заставит библиотеку работать с вашим кодом независимо от того, используют они androidx или нет.

android.useAndroidX=true
android.enableJetifier=true

enter image description here

...