Android Studio не удается создать привязку данных после обновления 3.1.0
сегодня утром я сделал обновление для android studio
от 3.0.1 до 3.1.0. После обновления gradle
до последней версии, я все еще получаю ошибку построения относительно привязки данных.
мой gradle-wrapper.properties
:
distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip
все мои ошибки, как показано ниже:
/Users/mp/Documents/GitHub/projectx/app/build/generated/source/dataBinding/baseClasses/Staging/debug/me/projectx/asdasd/databinding/GridItemActivityTypeBinding.java:57: error: cannot find symbol
@Nullable DataBindingComponent component) {
^
symbol: class DataBindingComponent
location: class GridItemActivityTypeBinding
кто-нибудь знает, почему моя привязка данных не генерируется после обновления android studio 3.1? Заранее спасибо
Edit 1: забыл сказать, я пробовал очистить/перестроить / аннулировать кэш & перезагрузить/удалить папку.
12 ответов
вам нужно изменить три вещи при обновлении с Android Studio 3.0.1 до 3.1.0. Это, как указано ниже
1) вам нужно изменить в gradle.фантик-свойства в distributionUrl. Ваш URL должен бытьdistributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip
2) необходимо обновить зависимость привязки данных в файле gradle уровня приложения из kapt 'ком.андроид.привязка данных: компилятор: 3.0.1 'to kapt' com.андроид.привязка данных:компилятор:3.1.0'
и если вы разрабатываете с помощью kotlin, то,
3) Третье и последнее, что нужно обновить kotlin gradle plug in путь к классам " org.в JetBrains.kotlin: kotlin-gradle-плагин: 1.2.30" до путь к классам " org.в JetBrains.kotlin: kotlin-gradle-плагин: 1.2.31" на уровне проекта gradle dependancy. Также вы можно обновить версию сборки gradle, как показано на рисунке ниже.
после всего выше шага просто очистите проект сборки и перестройки. Надеюсь, это поможет решить вашу проблему.
спасибо!! Удачи в кодировании!!
хорошо, так что те, кому интересно, как я это исправил. Решение довольно простое, но, вероятно, вам это не понравится.
Мне пришлось переместить все мои классы, которые использовались в привязке данных в корневом пакете проекта, и после того, как он снова начал работать.
чтобы исправить эту ошибку в проекте Java, вы должны откатить supportLibraryVersion -27.0.2
с 27.1.0
Отлично работает с AndroidStudio 3.1 и com.android.tools.build:gradle:3.1.0
ожидание исправления от Google
добавление этих строк в класс.свойства помогли мне сохранить проблему
android.enableExperimentalFeatureDatabinding = true
android.databinding.enableV2=true
Если вы используете kotlin на Android studio 3.2 , замените distributionurl этой строкой
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
и вам будет предложено изменить версию инструментов сборки на версию apprpriate. как только вы это сделаете , удалите эту строку из сборки уровня приложения.файл gradle
kapt 'com.android.databinding:compiler:3.0.1
и построить проект. у меня получилось.
после обновления до Android Studio 3.2 эта строка работает для меня. У меня есть код Java и Kotlin (компилятор), запущенный в моем проекте.
добавьте следующее к вашему gradle.свойства: android.привязка данных.enableV2=false
причина:
Привязка Данных V2
привязка данных V2 теперь включена по умолчанию и совместима с V1. Это означает, что если у вас есть зависимости библиотеки, которые вы скомпилированные с V1, вы можете использовать их с проектами, использующими привязку данных V2. Однако обратите внимание, что проекты, использующие V1, не могут использовать зависимости, скомпилированные с V2.
источник (версии): https://developer.android.com/studio/releases/
У меня была та же проблема. Исправлено, добавив google () в Project build.Gradle в
allprojects {
repositories {
jcenter()
**google()**
}
}
убедитесь, что вы добавили в allProjects
Это очень сложная ошибка с Android studio и привязкой данных! Мне пришлось протестировать все эти предлагаемые решения и еще несколько в течение целого дня, чтобы, наконец, скомпилировать привязку данных.
поэтому мне пришлось отключить все настройки databindind в gradle.properties
файл, просто прокомментируйте эти строки или удалите их:
android.databinding.enableV2 = true
android.enableExperimentalFeatureDatabinding = true
удалить buildToolsVersion
С build.gradle
и имеют следующие версии sdk:
compileSdkVersion 27
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
плюс еще пара чистых / перестроенных недействительных кэшей и перезагрузите, и он, наконец, скомпилирован. Как инженеры великолепны в создании ошибок!
Проверьте xml-файлы, если вы используете привязку данных. Сегодня я потратил один час, потому что переименовал один класс, и Android Studio решила внести изменения в мои xml-файлы. Например, у меня был класс с именем LiveGameModel, и я переименовал его в LiveGameView и решил внести изменения в xml-файлы, которые не связаны с этим представлением. Я знаю, эта ошибка не имеет смысла.
Это может быть не самый полезный ответ, но в моем случае это было вызвано полностью несвязанная проблема в моем коде.
Я получал 51 error: cannot find symbol: DataBindingComponent
ошибки (в каждом отдельном классе, сгенерированном привязкой данных), и я потратил века на удаление изменений в моем коде XML и ViewModel, пытаясь найти, что его вызывает.
проблема на самом деле заключалась в недопустимом изменении я сделал модель комнаты. Я предполагаю, что ошибка комнаты, возможно, была запутана всеми ошибки привязки данных, но журналы отладки/сканирования в терминале не указывали на это.
поэтому просмотрите весь последний код, даже, казалось бы, несвязанные изменения, если вы столкнулись с этой проблемой.
Edit: посмотреть этот так пост об этих ошибках привязки данных, запутывающих другие проблемы kapt (например, Room / Dagger)
не из этих решений работал для меня, поэтому я узнал его ошибку в версии 3.2 beta 4 Android studio:
buildscript {
repositories {
...
}
dependencies {
//classpath "com.android.tools.build:gradle:3.2.0-beta04" // buggy databinding
classpath "com.android.tools.build:gradle:3.1.3" // working
}}
после этого я синхронизирую, перестраиваю и запускаю everyting правильно
У меня была та же проблема. Я отключил привязку данных в свойствах gradle, и это сработало. dataBinding.enabled = false