New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
dp-2910 opened this issue
May 15, 2018
· 11 comments
Closed
Room does not work with data binding
#361
dp-2910 opened this issue
May 15, 2018
· 11 comments
Comments
I have create one project that uses a data binding library, but whenever i use room library in my project i have found an error like follow.
error: package com.example.project.databinding does not exist
import com.example.project.databinding.ActivityTutorialScreenBinding;
^
error: cannot find symbol
private ActivityTutorialScreenBinding binding;
^
symbol: class ActivityTutorialScreenBinding
location: class IntroducationScreen
Please help me out if any one found solution of this issue.
Thanks
Having the same issue with Room and DataBinding 😢
Hi, i solved the issue by creating a new module for room
Hi, I solve this problem just fixing SQL query. The problem as that userId was incorrect,
@Query("SELECT * FROM User WHERE userId = :userId")
the name of the row in the table was user_id
. Just fixing that and everything works fine.
I had the same issue. After spending hours on this, I finally fixed the error by replacing LiveData<ArrayList<MovieFavEntity>>
to LiveData<List<MovieFavEntity>>
. Just check the return type and queries of the different method in the Dao.
I guess this problem is related to kapt
or annotationProcessor
itself not room.
When the build fails, the databinding fails to generate these files too and Android Studio throws all errors to your face.
So you might need to go to the first error in the log or temporarily change kapt
to annotationProcessor
and rebuild to get clear error message.
Hello Team, I am facing the same issue which is raised. Can you please quickly look into that and fix this bug as soon as possible. as it impacts a lot for large scale project.
After enabling data binding
«dataBinding {
enabled = true
}»
I get
«[kapt] An exception occurred: java.lang.ExceptionInInitializerError»
It is working fine. you just need to use the latest versions of kotlin and room. I was also facing the issues earlier when I was also using dagger but after that when I switched to KOIN and used all latest versions it is working fine.
This doesn’t seem to be an issue with the samples. You can file an issue against Room on the issue tracker if you’re still having an issue.
Вопрос:
DataBinding очень хорошо работал в моем проекте, но после обновления Android Studio 2.3 сегодня. Запустить “приложение” не удалось, поскольку следующая ошибка:
Error:(15, 40) Error: package com.javan.myrecorder.databinding not exist.
import com.javan.myrecorder.databinding.FragmentEventsBinding;
:app:compileMockDebugJavaWithJavac FAILED
Я просто обновляю студию Android и ничего не меняю. весь плагин – последний! Теперь мой вопрос: почему возникает эта ошибка и как я могу ее решить? любая помощь приветствуется!
Английский язык не мой родной язык; пожалуйста, извините за ошибки с моей стороны.
EDIT1
Как проект андроида googlesamples/android-architecture
-
git checkout todo-databinding
- а затем запустите
./gradlew assembleDebug
для сборки, выполните сбой из-за следующей ошибки:
полный журнал сборки
EDIT2 Я исправил эту проблему, выполнив Связывание данных после обновления до Gradle 2.3.
в build.gradle(app)
добавить
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
..balabala
dependencies {
apt 'com.android.databinding:compiler:2.3.0'
}
некоторый файл в моем проекте:
gradle-wrapper.properties
#Mon Mar 06 10:59:04 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip
@petrnohejl @George Mount @Sa-Zad Prasla, Спасибо!
Лучший ответ:
android-apt
и, следовательно, использование apt
устарело с Android Studio 2.2.
Следуя руководству по миграции на android-apt, вместо этого добавьте в свой build.gradle
следующее:
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' // use same gradle version!
annotationProcessor 'com.android.databinding:compiler:2.3.0'
}
Если вы используете Kolin, вместо этого используйте:
apply plugin: 'kotlin-kapt'
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' // use same gradle version!
kapt 'com.android.databinding:compiler:2.3.0'
}
Ответ №1
Проблема возникает в предупреждении, которое трудно увидеть среди всех ошибок:
Предупреждение: использование несовместимых плагинов для обработки аннотации: android-apt. Это может привести к неожиданному поведению.
Если вы удалите apt, работает привязка данных.
Ответ №2
Я также столкнулся с той же проблемой.
Я использовал ButterKnife и Dagger !!
Решено как следует
1) Удалить из файла Gradle уровня приложения:
apply plugin: 'android-apt'
or apply plugin: 'com.neenbedankt.android-apt'
2) Удалить из файла Gradle уровня проекта:
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
3) И просто измените “apt на annotationProcessor” следующим образом:
apt 'com.jakewharton:butterknife-compiler:8.5.1',
apt "com.google.dagger:dagger-compiler:2.5"
To:
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1',
annotationProcessor "com.google.dagger:dagger-compiler:2.5"
Ответ №3
Связывание данных также сломалось для нас после обновления до Android Studio v2.3. Плагин GoLang Bind стал неспособным генерировать библиотеки .aar
файлов
Наша проблема была решена с помощью комбинации версии GoMobile версии “+ eb90329 от 7 марта 2017”, и плагин GoBind вернется к версии “0.2.6” (хотя текущая версия “0.2.8” )
Обновить GoMobile:
$ go get -u -x golang.org/x/mobile/cmd/gomobile
$ gomobile init -x
Вернуть плагин GoBind в build.gradle:
plugins {
id "org.golang.mobile.bind" version "0.2.6"
}
Это решение работает с системами с версиями 1.7.1 и 1.8, а также версиями Android 2.1.2, 2.2.3 и 2.3.
Ответ №4
Две вещи
Верните назад свой каталог gradel-wrapper.propertiesUrl в “https://services.gradle.org/distributions/gradle-2.14.1-all.zip”
Измените путь класса версии gradle к предыдущей версии “‘com.android.tools.build:gradle:2.2.3′”
P.S. Мгновенный запуск прекратит работу с ADT со старой версией gradle.
Ответ №5
Я тоже недавно загрузил последнюю версию Android 2.3.3, потому что я получал ту же ошибку в версии 2.2.3, т.е. Ошибка: не удалось разрешить: com.android.databinding: компилятор: 2.2.3, даже в последней версии, я получал ту же ошибку, я проверил структуру проекта. В Файл > Структура проектa > Проект версия Android Plugin была все еще 2.2.3, Я изменил его на 2.3.3, и сборка прошла успешно, и все работает плавно.
Ответ №6
Я решил эту проблему, изменив мою версию gradle на:
classpath 'com.android.tools.build:gradle:3.0.1'
Поскольку я использую Android Studio 3.0.1
Я пытаюсь использовать привязку данных с Android.
Я не могу больше строить свой проект. Я получил эту ошибку:
«Ошибка: (13, 46) ошибка: пакет ch.company.project.databinding не существует»
Вот мой gradle
:
http://pastebin.com/dkXd1Mxr
а также
http://pastebin.com/n9hkFWGQ
И вот выходной сигнал:
https://pastebin.com/w93Rausg
Ответ 1
Спасибо Yigit!
Проблема не была связана с привязкой данных Android. В проекте была ошибка (некоторые переменные установлены неправильно)
Я бы порекомендовал использовать gradle с «—debug и —stacktrace» для получения дополнительной информации, это очень помогает.
Ответ 2
Ошибка — это не пакет DataBinding, это синтаксическая или логическая ошибка. Например, у вас есть атрибут «lastName» в вашем POJO, но в макете это android:text="@{user.lastname}"
.
Проверьте свой «макет» и сделайте Rebuild Project.
Ответ 3
Я не удовлетворен принятым ответом, который говорит вам, чтобы вы могли отслеживать трассировку без подсказок.
Вот некоторые возможные причины, которые приводят к этой проблеме. Проверьте, не выполняете ли вы что-либо из следующего.
В принципе Android DataBinding не то, что созревает до сих пор. Он будет без ошибок много раз.
Так что если у вас есть проблема, такая как package ch.company.project.databinding does not exist"
.
Возможные причины сбоя:
- Прежде всего, проверьте ваши недавно отредактированные макеты XML по одной на наличие ошибок (для неправильного
imports
иvariables
). Я обычно не получаю правильную ошибку в этом случае. - Проверьте синтаксис привязки данных в блоке привязки ({…}) в элементе макета на наличие ошибок. Всегда перестраивать (не строить) проект после работы в одном макете.
- Проверьте свой метод
@BindingAdapter
имеющий правильные параметры. Например,imageUrl
привязкиimageUrl
приметImageView
илиView
качестве первого параметра. -
Вы должны всегда перестраивать проект после выполнения работы в одном макете.
-
Если вы не можете найти ошибки с помощью вышеуказанных шагов, попробуйте
--debug and --stacktrace
в опции компиляцииFile> Settings> Build, Execution, Deployment> Compiler> Command-line Options
Ответ 4
У меня были схожие проблемы с моим проектом
Вы можете попробовать:
- проверить файлы xml для ошибок, которые вызывают сбои сборки
- чистый проект
- Файл — недействительный кеш/перезапуск
Ответ 5
В моем конкретном случае я использовал Dagger 2. Эта ошибка пакета появляется во многих классах без какой-либо связи с исходной ошибкой: ошибка впрыскивания зависимостей.
Счастливое напоминание: прокрутите еще раз на свой стек, чтобы узнать, в чем проблема.
Ответ 6
Я застрял с той же ошибкой в течение нескольких часов. Попробовав несколько решений из stackoverflow, я обновил свой проект со стабильными зависимостями gradle.
Тем не менее это не было решено, однако с той же зависимостью gradle отлично работало DataBinding
в другом моем проекте.
Итак, я пошел в папку проекта с помощью проводника и удалил 2 вещи.
- создать папку
- все файлы из .idea/library
После этого я синхронизировал проект, и он продолжал работать просто отлично.
Ответ 7
Я получил ошибку:
Ошибка: (9, 46) ошибка: пакет com.company.www.bar.databinding не существуют.
я просто удаляю знак «=». это сработало для меня
Из этого:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@={()->activity.onButtonClick()}"/>
to:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{()->activity.onButtonClick()}"/>
Ответ 8
Убедитесь, что в ваших образцовых полях, которые вы указали в макете, есть public
модификаторы доступа
Ответ 9
Чтобы избавиться от этой ошибки, просто приложите полный дизайн макета внутри простого тега макета в файле activity_main.xml
.
Потеряв много часов в поиске решения, это сработало для меня. Попробуйте.
Ответ 10
Убедитесь, что название вашего пакета начинается со строчной буквы. в моем случае проблема решена после двух часов борьбы