不再生成数据绑定类

时间:2019-04-23 20:12:25

标签: android-studio

我在Android Studio中有一个正在工作的项目,包括数据绑定。这消除了一些可能的错误来源。 ;-)

然后,我决定与Kotlin接触,并开始将某些类从Java迁移到Kotlin。 不幸的是,在此过程中,我还勉强将Android-Studio更新为3.4。所以现在我有很多活动部件...

现在,在进行一些编辑之后,当我尝试编译我的应用程序时,不再生成数据绑定类。通常这是缺少吸气剂或吸气剂或类似东西的问题。但是目前我还没有编译器错误指示此类问题。仅提及我的无线电通信局。该类为红色,因为未生成该类。

在布局文件中,未显示数据变量的获取器和设置器-因此已经存在问题。

build-log告诉我检查日志以了解详细信息,但是找不到任何带有错误消息的日志,这可能会导致解决方案。

Android-Studio 3.4,Java / Kotlin混合源代码 除了那些缺少的BR类,目前我没有其他编译错误。

我检查了原始gradle的输出,并尝试使用更详细的输出运行这些步骤-没运气。

可能与以下内容有关:
-在使用约束视图编辑现有布局时,我也遇到问题。约束以某种方式是只读的。 经过一番研究之后,我设法使一种布局回到了读写模式。不知道我做了什么...
-还有一个问题是,Android Studio会“记住”最后一个项目,并将最后一个项目的配置与当前项目的配置混合在一起。要解决此问题,我必须删除项目中的.idea文件夹...之后,我可以使用我的项目,直到我更改为另一个项目或并行打开另一个项目为止……:-/

为了获取日志,我还更改了由编译器生成的绑定类,而不是由Android-Studio即时生成-不走运。

由于这是具有一定历史的安装,因此我也尝试从Android-Studio删除配置文件-也不走运。

清理并重建项目,重新启动Android-Studio,使缓存无效……所有尝试均未成功。

目前,我不知道在哪里看。也许有人在那里给我小费?

2 个答案:

答案 0 :(得分:0)

如果您在xml中使用导入,例如

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

您必须将其删除,因为android studio是自动导入的。

ref:

Just as in managed code, java.lang.* is imported automatically.

答案 1 :(得分:0)

最后,我找到了问题的根源!
在多次尝试在我的代码或Android-Studio中发现错误之后(也降级为3.3,并尝试了当前的3.5 Canary版本),我决定将代码缩减到最大。

所以我创建了一个新项目。在该项目中,我创建了2个可观察的类,并从https://developer.android.com/topic/libraries/data-binding/observability#observable_objects复制了最少的代码。 我在Java中创建了一个类,在Kotlin中创建了一个类(在属性上带有索引号,以便可以看到在BR类中生成了哪些属性)。 在BR类中仅生成Java类的属性,而Kotlin类中的属性则丢失。除了丢失的BR属性外,未生成任何错误消息。 :-(

利用这些信息,我开始了一项新的研究,并最终发现,对于Kotlin,目前apply plugin: 'kotlin-kapt'在项目build.gradle文件中丢失。
添加完之后,还将Kotlin类的属性添加到BR类。
一些(较旧的)文章还将kapt "com.android.databinding:compiler:x.x.x"添加到依赖项中,但是在最新的编译器中,我得到了空指针异常。似乎已经在其他地方引用了此组件,因为没有必要了。

我还将其添加到其他项目中,现在这些BR属性也存在于其中。因此,我有信心找到问题的答案,现在可以专注于错误修复我的应用程序。