自从更新到 Android Studio 3.2.0
我面临以下问题:
任务 ‘:mobile:dataBindingGenBaseClassesDebug’ 执行失败。
> 无法猜测 com.ACME.database.model.Order
还看到了这个 答案,它暗示“包名必须以小写字母开头”。
…看起来很像,好像这个 variable
分配是原因:
<data class=".databinding.OrderFragmentBinding">
<variable name="order" type="com.ACME.database.model.Order"/>
...
</data>
发现: 用于绑定类的新数据绑定编译器,它没有解释行为的变化。
问:此类分配是否也受该命名约定的影响?我的意思是,是否有任何机会(除了更改大写包名称之外)使数据绑定 v2“猜测”成功?
原文由 Martin Zeitler 发布,翻译遵循 CC BY-SA 4.0 许可协议
gradle.properties
中的这些设置启用androidx
数据绑定编译器:从获取的包中可以看出:
它抱怨:
最有可能需要
androidx.fragment.app.Fragment
而不是android.support.v4.app.Fragment
以数据绑定 aFragment
使用编译器默认数据绑定 v– 数据绑定这也只是一个临时解决方案——但仍然比恢复到 v1 数据绑定编译器要好。更新:
由于
com.android.tools.build:gradle:3.5.0
以上解决方法不再有效;必须重构 XML 文件。当不将任何class=""
属性添加到<data />
标签中并将此标签添加到任何现有的<layout>
标签中时,效果最佳。 Duplicateid
on data-bound<include>
tags may also prevent the generation (theid
has to be set on the<include>
tag, not在包含的布局中)。