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

Android应用获取广告ID时崩溃:Google Play Services版本值异常

解决获取Advertising ID时因Google Play Services版本meta-data不匹配导致的崩溃

问题重现

在尝试获取Advertising ID时应用崩溃,堆栈信息如下:

Caused by com.google.android.gms.common.GooglePlayServicesIncorrectManifestValueException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 1XXXXXXX but found 4YYYYYY. You must have the following declaration within the  element:     
at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(com.google.android.gms:play-services-basement@@18.0.0:32)
at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(com.google.android.gms:play-services-basement@@18.0.0:2)
at com.google.android.gms.ads.identifier.AdvertisingIdClient.zzb(com.google.android.gms:play-services-ads-identifier@@17.1.0:7)
at com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(com.google.android.gms:play-services-ads-identifier@@17.1.0:3)
at com.caratlane.android.activity.MainApplication$2.doInBackground(MainApplication.java:236)
at com.caratlane.android.activity.MainApplication$2.doInBackground(MainApplication.java:231)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)

已确认AndroidManifest.xml的application标签内存在如下配置:

<meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

尝试过添加Advertising ID权限、直接写入版本值,均未解决问题。

解决方案

1. 统一Google Play Services依赖版本

从堆栈日志可见,play-services-basement版本为18.0.0,而play-services-ads-identifier版本为17.1.0,二者版本不一致是核心诱因。需确保所有com.google.android.gms相关依赖使用同一版本:

  • 打开项目根目录的build.gradle(或build.gradle.kts),在ext块定义统一版本号:
    ext {
        gmsVersion = "18.0.0" // 或使用最新稳定版
    }
    
  • 在模块的build.gradle中,所有gms依赖引用该统一版本:
    implementation "com.google.android.gms:play-services-basement:$gmsVersion"
    implementation "com.google.android.gms:play-services-ads-identifier:$gmsVersion"
    

2. 清理项目缓存并重新构建

缓存可能导致@integer/google_play_services_version的值未正确同步:

  • 在Android Studio中执行Build > Clean Project
  • 接着执行Build > Rebuild Project
  • 若仍无效,手动删除项目根目录下的build文件夹和~/.gradle/caches目录(注意备份重要文件)

3. 检查合并后的Manifest配置

第三方库或模块Manifest可能覆盖了com.google.android.gms.version的值:

  • 打开AndroidManifest.xml,点击底部的Merged Manifest标签
  • 搜索com.google.android.gms.version,查看最终生效的value是否与依赖版本匹配
  • 若发现冲突,在主Manifest中添加tools:replace="android:value"强制覆盖:
    <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"
            tools:replace="android:value" />
    
    需确保已在Manifest根标签中引入xmlns:tools="http://schemas.android.com/tools"

4. 确认Google Services插件配置

若使用google-services.json,需确保插件正确配置,避免版本冲突:

  • 在模块的build.gradle中,确保插件已应用:
    plugins {
        id 'com.android.application'
        id 'com.google.gms.google-services' // 需放在Android插件之后
    }
    
  • 插件会自动管理google_play_services_version,此时可尝试移除手动配置的meta-data,由插件自动生成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:01:42