Классы привязки данных больше не генерируются - PullRequest
0 голосов
/ 23 апреля 2019

У меня был рабочий проект в Android-Studio, включая Databinding.Это устраняет некоторые возможные источники ошибок.; -)

Тогда я решил намочить ноги с Kotlin и начал переносить некоторые классы с Java на Kotlin.К сожалению, я также щелкнул обновить Android-Studio до 3.4 в середине этого процесса.Так что теперь у меня много движущихся частей ...

Теперь после некоторого редактирования, когда я пытаюсь скомпилировать свое приложение, классы привязки данных больше не генерируются.Обычно это проблема отсутствующих геттеров или сеттеров или что-то в этом роде.Но в настоящее время у меня нет ошибок компиляции, которые указывают на такие проблемы.Только все ссылки на мой БР.класс красного цвета, так как этот класс не генерируется.

В файлах компоновки геттеры и сеттеры из переменной data не отображаются - поэтому там уже есть проблема.

Сборка-log говорит мне проверить подробности журнала, но я не могу найти ни одного журнала с сообщениями об ошибках, которые могли бы привести к решению.

Android-Studio 3.4, смешанный исходный код Java / Kotlin Кроме пропущенных классов BR, У меня нет других ошибок компиляции на данный момент.

Я проверил необработанный вывод gradle и также попытался выполнить эти шаги с более подробным выводом - не повезло.

Может быть, это связано:
- У меня также есть проблемы с редактированием существующих макетов с помощью видов ограничений.Каким-то образом ограничения доступны только для чтения.После некоторой возни мне удалось вернуть один макет обратно в режим чтения-записи.Не уверен, что я сделал для достижения этой цели ...
- Также у меня проблема в том, что Android-Studio "запоминает" последний проект и смешивает конфигурации из последнего проекта с конфигурацией текущего.Чтобы это исправить, я должен удалить папку .idea в проекте ... После этого я могу работать с моим проектом, пока не переключусь на другой или не открою второй параллельно ...: - /

InДля того, чтобы получать логи, я также изменил, чтобы генерировать классы привязки компилятором, а не на лету Android-Studio - не повезло.

Поскольку это установка с некоторой историей, я также попытался удалить конфигурацию-файлы из Android-Studio - тоже не повезло.

Очистка и восстановление проекта, перезапуск Android-Studio, недействительные кэши ... все, что пыталось безуспешно.

В настоящее время у меня нетидеи где искать.Может, у кого-нибудь есть совет для меня?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Наконец-то я нашел источник своих проблем!
После многих попыток найти ошибку в моем коде или, может быть, в Android-Studio (также пониженной до 3.3 и попробовавшей текущую 3.5 канарскую версию) я решил сократить код до максимума.

Итак, я создал новый проект. В этом проекте я создал 2 наблюдаемых класса и скопировал минимальный код из https://developer.android.com/topic/libraries/data-binding/observability#observable_objects. Я создал один класс в java и один класс в Kotlin (с индексом-Number в свойствах, чтобы я мог видеть, какие свойства генерируются в классе BR). Только свойства из Java-класса были сгенерированы в классе BR, а свойства из класса Kotlin отсутствовали. Никаких сообщений об ошибках кроме отсутствующих BR-свойств не было сгенерировано. :-(

Получив эту информацию, я начал новое исследование и, наконец, обнаружил, что для Kotlin в настоящее время отсутствует apply plugin: 'kotlin-kapt' в файле проекта build.gradle.
Как только я добавил это, в класс BR были добавлены свойства из класса Kotlin.
Некоторые (более старые) статьи также добавляют kapt "com.android.databinding:compiler:x.x.x" к зависимостям, но с последним компилятором я получил исключения с нулевым указателем. Кажется, что этот компонент уже упоминается где-то еще, потому что это не нужно (больше).

Я также добавил это в свой другой проект, и теперь эти BR-свойства также присутствуют там. Поэтому я уверен, что нашел ответ на свой вопрос и теперь могу сосредоточиться на исправлении ошибок в моем приложении.

0 голосов
/ 24 апреля 2019

, если вы используете импорт в формате XML, например

<import type="java.lang.Integer"/>

, вам нужно удалить его, поскольку Android Studio импортируется автоматически.

ref:

Так же, какв управляемом коде java.lang. * импортируется автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...