数据绑定失败,并显示"couldn't make a guess"



自从更新到Android Studio3.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"猜测"起作用?

这是因为您的类名或包名使用数据绑定。这些类(使用数据绑定(必须以大写字母开头,包必须以小写字母开头。

有类似的问题。通过以大写字母开头重命名数据类来解决。

gradle.properties中的这些设置将启用androidx数据绑定编译器:

android.databinding.enableV2 = false
android.enableExperimentalFeatureDatabinding = true

通过获取的包可以看到:

Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.pom
Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.jar

它抱怨:

WARNING: The option setting 'android.databinding.enableV2=false' is experimental and unsupported.
The current default is 'true'
WARNING: The option setting 'android.enableExperimentalFeatureDatabinding=true' is experimental and unsupported.
The current default is 'false'

为了使用默认 v2 数据绑定编译器对Fragment进行数据绑定,很可能需要androidx.fragment.app.Fragment而不是android.support.v4.app.Fragment。 这也只是一个临时解决方案 - 但仍然比还原到 v1 数据绑定编译器要好。


更新

由于com.android.tools.build:gradle:3.5.0上述解决方法不再有效;必须重构 XML 文件。当不将任何class=""属性添加到<data />标签中,以及将此标签添加到任何现有的<layout>标签中时,它的效果最佳。数据绑定<include>标记上的重复id也可能阻止生成(id必须在<include>标记上设置,而不是在包含的布局中设置(。

会遇到此错误的情况:

<data>
<variable
name="something"
type=""/>
</data>

空类型或未定义类型

更新到 3.2 后,我也会发生同样的事情(迁移前的工作应用程序,并且没有代码更改(......那么这个"猜测"问题,即使我在包名称的第一个字母中确实有小写!

<data>
...
<variable name="rule" type="com.gta.viewmodels.vmRule"/>
...
</data>

所以我"猜"即使在您更新软件包名称后,您的问题仍然存在(无论如何,这是最佳实践,因为每次我升级 Android Studio 时都会出现问题!

无论如何,我通过在gradle.properties中降级v2数据绑定来解决(您将收到"不支持"警告,但请忽略它(:

android.databinding.enableV2=false

看起来Android Studio PG还没有很好地测试这个断言(这里(:

Data Binding V2 is now enabled by default and is compatible with V1.

我遇到了这个问题,因为 1.my 视图模型类未从 BaseObservable 扩展

  1. 我的软件包名称以大写字母开头

我得到了这个错误,它通过将点击处理程序类名的第一个字母更改为大写字母来解决 我把这个:clickHandler改成这个:ClickHandlercom.packagename.android.activity.AddAddressActivity。点击处理程序

以防万一上述方法均无效,请检查您引用的类类型是在同一模块中还是在 xml 所依赖的模块中。

就我而言,这只是类型变量 XML 文件中的错误路径

<data>
<variable
name="clickListener"
type="com.example.liberdade.caixa.CaixaListener" />

我的情况是我在小字母中使用类名(属性模型(应该是(属性模型(

将我的包从

"唰。AmoTech.unischool" 自 "com.amotech.unischool">

,错误消失了,我能够在 Android Studio 中毫无错误地构建。 显示包装更改的图像

所有目录必须用简单的字母,否则会出现此错误

package com.saw1993.mrep.activities.products

如果您的软件包开始大写字母将其更改为小,它将解决问题。

相关内容

  • 没有找到相关文章

最新更新