Как заставить библиотеку использовать androidX constraintlayout вместо android.support constraintlayout

Я реализую 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?

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

Похоже, библиотеку нужно обновить, чтобы использовать предоставленный ConstraintLayout или просто использовать сам Android X: / Похоже, у вас нет доступа к исходному коду, поэтому исправьте их, чтобы обновить его! :)

Martin Marconcini 02.11.2018 19:02

@MartinMarconcini Это то, что я подумал сначала, но класс FragmentChatListBinding на самом деле является сгенерированным кодом. поэтому я считаю, что они на самом деле не писали, что написала студия Android класса.

Dan Anderson 02.11.2018 19:43
1
2
1 318
1

Ответы 1

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

android.useAndroidX=true
android.enableJetifier=true

Другие вопросы по теме