У меня есть общий модуль и модуль для телевизора. После обновления на плагин Gradle 3.2.0
из 3.0.0
другие части приложения, в частности классы, которые не наследуются от общего модуля, аварийно завершают работу при открытии на телевизоре из-за этой ошибки:
java.lang.ClassCastException:
com.package.tv.databinding.FragmentDialogGenericBindingImpl cannot be cast to
com.package.shared.databinding.FragmentDialogGenericBinding at
com.package.shared.dialog.GenericDialog.onCreateView(GenericDialog.java:48)
Так что в этом конкретном случае у меня есть:
- Общий файл макета в общем модуле в каталоге макетов, который называется
fragment_dialog_generic.xml
- Файл макета в телевизионном модуле в каталоге layout-TV, называется
fragment_dialog_generic.xml
Класс GenericDialog, который внутри onCreateView
строки 48 имеет:
FragmentDialogGenericBinding dialog =
DataBindingUtil.inflate(inflater, R.layout.fragment_dialog_generic, container, false);`
До обновления привязка генерировалась нормально, теперь по какой-то причине она не может привести к FragmentDialogGenericBinding
.
Как в общем (библиотечном) модуле, так и в телевизионном модуле у меня включена привязка данных, кинжал 2.16
, библиотека поддержки 26.1.0
.
При обновлении с подключаемого модуля Gradle 3.0.0
до 3.2.0
мне пришлось обновить следующие библиотеки:
- Котлин от
1.2.20
до 1.2.51
- classpath
io.fabric.tools:gradle:1.25.2
до 1.25.4
gradle-4.2.1-all.zip
до gradle-4.6-all.zip
Кто-нибудь знает, как можно добраться до состояния, в котором макет с телевизора нельзя использовать поверх файлов макетов по умолчанию?