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

升级play-services-ads到21.0.0报Val无法重赋值错误如何解决

错误原因

com.google.android.gms:play-services-ads 从21.0.0版本开始做了API破坏性调整:AdView类的adSize、adUnitId两个属性从之前的可写可变属性,改成了仅可读的val修饰属性,必须在实例化AdView的时候通过构造方法传入初始化,实例创建完成后不支持再重新赋值。原有代码是先创建空参AdView实例,再在apply块里给这两个val属性赋值,就会触发「Val cannot reassign(值不可重赋值)」的错误。
当前触发问题的依赖配置如下:

implementation 'com.google.android.gms:play-services-ads:21.0.0'

修复方案

把原来先创建AdView再赋值属性的写法,改成调用带三个参数的AdView构造方法,在实例化的时候就传入Context、广告尺寸、广告单元ID三个必填参数,不需要再额外给adSize、adUnitId赋值,修改后的Jetpack Compose实现代码如下:

AndroidView(
    factory = { context ->
        AdView(
            context = context,
            adSize = AdSize.FULL_BANNER,
            adUnitId = "ca-app-pub-....62"
        ).apply {
            loadAd(AdRequest.Builder().build())
        }
    }
)
  • 补充说明:如果是Java代码调用该版本SDK,原来调用setAdSize()、setAdUnitId()的写法也会编译报错,同样需要改成调用三参构造方法初始化AdView即可。

内容的提问来源于stack exchange,提问作者Marwan Talal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:54:23