我的目标是将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确实很差。我试图应用其他编译器参数来获得其他一些见识,但是没有运气。
有人遇到过同样的问题吗?有提示吗?
答案 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上提及。