Androidx и привязка данных
Я переношу свои зависимости для теста Android P в зависимости от androidx. По некоторым не очень ясным причинам мой проект больше не компилируется (и я не буду давать подробностей, чтобы избежать отдельной проблемы). Я обнаружил (через gradlew dependencies
), что gradlew dependencies
"oldschool" android.arch.lifecycle:runtime:1.0.3
вместо androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
. Думаю, это может быть одной из причин.
Любая идея, как заставить использование новых имен/зависимостей пакетов?
Ответы
Ответ 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