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

enter image description here К enter image description here

2) необходимо обновить зависимость привязки данных в файле gradle уровня приложения из kapt 'ком.андроид.привязка данных: компилятор: 3.0.1 'to kapt' com.андроид.привязка данных:компилятор:3.1.0'

enter image description here

и если вы разрабатываете с помощью 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, как показано на рисунке ниже.

enter image description here

после всего выше шага просто очистите проект сборки и перестройки. Надеюсь, это поможет решить вашу проблему.

спасибо!! Удачи в кодировании!!


хорошо, так что те, кому интересно, как я это исправил. Решение довольно простое, но, вероятно, вам это не понравится.

Мне пришлось переместить все мои классы, которые использовались в привязке данных в корневом пакете проекта, и после того, как он снова начал работать.


чтобы исправить эту ошибку в проекте 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