升级至12.0.0版本后Cloud Firestore的@PropertyName注解构建报错
解决Firestore @PropertyName注解在12.0.0版本的构建错误
这个问题我之前升级Firebase版本时也碰到过,其实核心原因是Firebase在12.0.0版本里对@PropertyName注解的API做了小调整——原来的value()属性被重命名成了name()。
具体修复步骤
- 先找到代码里所有使用
@PropertyName的位置,比如原来的写法可能是:
或者省略属性名的简写形式:@PropertyName(value = "user_name") private String userName;@PropertyName("user_name") private String userName; - 将显式指定
value的地方替换为name,修改后代码如下:
至于简写形式(直接传字符串),因为Java注解的默认属性规则,依然可以正常使用,不需要修改。@PropertyName(name = "user_name") private String userName;
错误原因说明
Google在Firebase 12.0.0版本的更新中,为了让@PropertyName注解的命名和Firebase Realtime Database里的同功能注解保持一致,统一将注解的属性从value改为了name。如果代码里显式调用了value()方法,就会因为这个方法不存在而触发"cannot find symbol method value()"的构建错误。
额外注意事项
- 确保项目中所有Firebase相关库都升级到12.0.0版本,不要混合不同版本的库,避免引发其他兼容性问题。
- 如果使用Kotlin开发,修改逻辑和Java一致,把
value = "xxx"替换成name = "xxx"即可。
内容的提问来源于stack exchange,提问作者itog
相关产品推荐
相关产品推荐

