Невозможно использовать привязку данных с файлами макетов из телевизионных модулей после обновления до версии 3.2.0. - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть общий модуль и модуль для телевизора. После обновления на плагин 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

Кто-нибудь знает, как можно добраться до состояния, в котором макет с телевизора нельзя использовать поверх файлов макетов по умолчанию?

...