You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DataBinding点击事件构建项目时ProGuard报错求助

DataBinding Lambda点击事件引发的ProGuard错误解决方法

问题场景

你在布局文件中通过DataBinding绑定点击事件:

  • 定义了变量clickHandler,类型为com.example.ui.ClickHandler
  • TextView的android:onClick绑定了Lambda表达式:@{(v)-> clickHandler.onClick(v)}
  • 对应的ClickHandler接口包含onClick(View)方法

构建项目时触发ProGuard错误:

在D:\Second Repo\app\build\intermediates\aapt_proguard_file\release\aapt_rules.txt:480:33位置提示“Expected field or method name”,对应的自动生成规则为:
-keepclassmembers class * { *** @{(v)-> clickHandler.onClick(v)}(android.view.View); }

解决方案

1. 替换Lambda为方法引用(推荐)

将布局中的Lambda绑定改为直接方法引用写法,这是DataBinding官方推荐的绑定方式,也能避免ProGuard规则生成错误:

android:onClick="@{clickHandler::onClick}"

这种写法会让aapt生成正确的ProGuard规则,无需额外配置。

2. 手动添加ProGuard规则(保留Lambda写法时使用)

如果必须使用Lambda表达式,在项目的proguard-rules.pro文件中添加以下规则,确保ClickHandler的方法不被混淆:

# 保留ClickHandler接口及onClick方法
-keep class com.example.ui.ClickHandler {
    public void onClick(android.view.View);
}
# 保留所有实现了ClickHandler接口的类的onClick方法
-keepclassmembers class * implements com.example.ui.ClickHandler {
    public void onClick(android.view.View);
}

添加后,自动生成的错误规则会被自定义规则覆盖,避免解析失败。

3. 升级DataBinding相关依赖

部分旧版本的Android Gradle插件和DataBinding库在处理Lambda绑定的ProGuard规则时存在bug,尝试将gradle插件版本升级到4.0及以上,同步依赖后可能自动修复规则生成问题。

内容的提问来源于stack exchange,提问作者Aagam Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:24:58