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

升级com.google.android.gms:play-services-ads至20.0.0遇Targeting S+错误

解决play-services-ads 20.0.0升级后Targeting S+(API31+)错误

核心原因

play-services-ads从20.0.0版本开始强制要求适配Android 12(API31)及以上的系统行为变更,旧的targetSdkVersion和依赖配置跟不上就会触发报错。

具体解决方案

  • 升级targetSdkVersion到31+
    打开app模块的build.gradle,修改defaultConfig里的targetSdkVersion:

    android {
        defaultConfig {
            targetSdkVersion 31 // 建议直接升到当前最新稳定API版本,比如34
        }
    }
    
  • 补上API31+必须的权限和配置

    1. 添加通知权限到AndroidManifest.xml:
      <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
      
      注意这个权限是危险权限,需要在代码里动态申请(用户打开APP或触发广告前申请)。
    2. 给广告相关的前台服务声明类型(如果SDK用到):
      在Manifest里添加AdService的配置:
      <service
          android:name="com.google.android.gms.ads.AdService"
          android:foregroundServiceType="dataSync|mediaPlayback"
          android:exported="false"/>
      
    3. 检查代码里的PendingIntent创建:API31+要求必须指定FLAG_IMMUTABLE或FLAG_MUTABLE,比如:
      val pendingIntent = PendingIntent.getActivity(
          context,
          0,
          intent,
          PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
      )
      
  • 升级Gradle插件(你的4.2.2版本太老,对API31支持不足)

    1. 根目录build.gradle里升级插件版本:
      dependencies {
          classpath 'com.android.tools.build:gradle:7.0.4' // 选和你Kotlin版本兼容的,1.6.10对应7.0.x以上都可以
          classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
      }
      
    2. 修改gradle-wrapper.properties里的Gradle版本,和插件对应:
      distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
      
  • 排查依赖冲突
    用命令查看依赖树,找出还在使用旧targetSdk的依赖:

    ./gradlew app:dependencies
    

    把这些依赖升级到适配API31+的版本,避免混合导致的兼容性问题。

  • 最后清理重建
    执行Clean Project再Rebuild Project,或者用命令:

    ./gradlew clean build
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:30:56