Подтвердить что ты не робот

Androidx и привязка данных

Я переношу свои зависимости для теста Android P в зависимости от androidx. По некоторым не очень ясным причинам мой проект больше не компилируется (и я не буду давать подробностей, чтобы избежать отдельной проблемы). Я обнаружил (через gradlew dependencies), что gradlew dependencies "oldschool" android.arch.lifecycle:runtime:1.0.3 вместо androidx.lifecycle:lifecycle-runtime:2.0.0-beta01. Думаю, это может быть одной из причин.

Любая идея, как заставить использование новых имен/зависимостей пакетов?

4b9b3361

Ответ 1

Я пробовал это, хотя у меня было слабое подключение к Интернету, поэтому я пропустил обновление до Android Studio 3.2. Это была моя вина. С этим обновлением (разборчивость заняла почти час, не знаю, почему) мне также было предложено обновить мои инструменты сборки до com.android.tools.build:gradle:3.2.0-beta04 (или что-то com.android.tools.build:gradle:3.2.0-beta04 что соответствует новейшей версии для вашего Android Версия Studio (я бы не установил 3.3.0-alpha03) и обновил оболочку градации до 4.6.

Теперь зависимости исчезли, и я счастлив.

Ответ 2

Я сталкиваюсь с аналогичной проблемой, библиотека Data Binding использует библиотеку поддержки, некоторые классы могут конфликтовать с AndroidX. На данный момент я должен удалить DataBinding.

Я только что прочитал это примечание к выпуску, он сказал, что этот вопрос был исправлен, но я не видел эффекта.

Ответ 3

Включение AndroidX в gradle.properties эту проблему для меня:

android.useAndroidX=true
android.enableJetifier=true

См. Https://developer.android.com/jetpack/androidx#using_androidx:

android.useAndroidX: при значении true плагин Android использует соответствующую библиотеку AndroidX вместо библиотеки поддержки. По умолчанию флаг имеет значение false, если он не указан.
android.enableJetifier: при значении true плагин Android автоматически переносит существующие сторонние библиотеки в AndroidX, переписывая их двоичные файлы. По умолчанию флаг имеет значение false, если он не указан.

Ответ 4

В моем случае ошибка была в том, что инструмент для перехода на AndroidX не работает идеально. Были еще файлы макетов, использующие старые библиотеки поддержки. После исправления этих файлов все прошло хорошо =)

Чтобы исправить, каждую библиотеку поддержки, которая использовалась в этих файлах макета, я изменил на нужную по следующей ссылке: https://developer.android.com/jetpack/androidx/migrate

Ответ 5

Проверьте файлы макета, может быть, остались представления, которые используют библиотеку поддержки вместо androidx, например

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

изменить на

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

Ответ 6

1- Добавьте эту строку в build.gradle

android {

    dataBinding {
        enabled = true
    }

}

2- gradle.properties (Свойства проекта)

android.databinding.enableV2=true