Androidx и привязка данных
Я перевожу свои зависимости для теста Android P на зависимости androidx. По некоторым не очень понятным причинам мой проект больше не компилируется (и нет, я не буду предоставлять подробности, чтобы избежать отдельной проблемы). Я узнал (через gradlew dependencies
) что привязка данных использует зависимость "oldschool" android.arch.lifecycle:runtime:1.0.3
вместо androidx.lifecycle:lifecycle-runtime:2.0.0-beta01
, Я думаю, это может быть одной из причин.
Любая идея, как заставить использовать новые имена пакетов / зависимости?
2 ответа
Я попробовал это, пока у меня было слабое интернет-соединение, поэтому я пропустил обновление до Android Studio 3.2. Это была моя вина. С этим обновлением (разархивирование заняло почти час, не зная почему), меня также попросили обновить инструменты сборки до com.android.tools.build:gradle:3.2.0-beta04
(или какой-либо новой версии, соответствующей вашей версии Android Studio (я бы не стал устанавливать 3.3.0-alpha03
) и обновил упаковщик Gradle до версии 4.6.
Теперь зависимости исчезли, и я счастлив.
Я сталкиваюсь с подобной проблемой, Data Binding
библиотека использует библиотеку поддержки, некоторые классы могут конфликтовать с AndroidX
, Я должен удалить DataBinding
теперь.
Я только что прочитал эту заметку о выпуске, там говорилось, что эта проблема была исправлена, но я не увидел эффекта.
Включение AndroidX в gradle.properties
исправил эту проблему для меня:
android.useAndroidX=true
android.enableJetifier=true
См. https://developer.android.com/jetpack/androidx:
android.useAndroidX
: При значении true плагин Android использует соответствующую библиотеку AndroidX вместо библиотеки поддержки. По умолчанию флаг имеет значение false, если он не указан.android.enableJetifier
: При значении true плагин Android автоматически переносит существующие сторонние библиотеки для использования AndroidX, переписывая их двоичные файлы. По умолчанию флаг имеет значение false, если он не указан.
Проверьте файлы макета, может быть, остались представления, которые используют библиотеку поддержки вместо 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">
1- Добавьте эту строку в build.gradle
android {
dataBinding {
enabled = true
}
}
2- gradle.properties(Свойства проекта)
android.databinding.enableV2=true
В моем случае ошибка заключалась в том, что инструмент для перехода на AndroidX не работает идеально. Были еще файлы макетов, использующие старые библиотеки поддержки. После исправления этих файлов все прошло хорошо =)
Чтобы исправить, каждую библиотеку поддержки, которая использовалась в этих файлах макета, я изменил на нужную по следующей ссылке: https://developer.android.com/jetpack/androidx/migrate