尝试将Gradle插件从3.5.1迁移到3.5.2时,数据绑定中出现StackOverflowError

时间:2019-12-04 13:31:16

标签: android android-gradle-plugin android-databinding

我的目标是将android gradle插件从3.5.1迁移到3.5.2。

但是,一旦执行此操作,构建将失败,并显示以下错误:

error: cannot generate view binders java.lang.StackOverflowError
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:209)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)
    at android.databinding.tool.expr.Expr.resolveListeners(Expr.java:211)

它清楚地表明它与数据绑定有关,但是stacktrace确实很差。我试图应用其他编译器参数来获得其他一些见识,但是没有运气。

有人遇到过同样的问题吗?有提示吗?

2 个答案:

答案 0 :(得分:1)

一旦您在xml文件中调用ObservableField.get(),类似AGP 3.5.2就会失败。请在Google Issues Tracker上查看this comment,以解决类似问题。

您可以尝试从代码库中删除.get()使用情况,这是绝对安全的。

答案 1 :(得分:0)

我在AGP 3.4.2上收到此警告:

不要在ObservableFields上显式调用'get()'或在显式调用'getValue()' 表达式中的LiveData。该支持将很快删除。

似乎该支持已在AGP 3.5.2中删除,而没有在changelog上提及。