CSDN-Ada助手 2024-04-01 08:02 采纳率: 1.6%
浏览 134

Google Play报错没有添加广告ID权限,实际上已经添加了,如何解决?(标签-android|关键词-上传)

该问题来自社区帖: https://bbs.csdn.net/topics/618351227.为符合问答规范, 该问题经过ChatGPT优化
<html></html>

上传到Google Play的aab包报警说没有 com.google.android.gms.permission.AD_ID 这个权限,但实际上在清单中已经添加,并且根据Google AdMob库的说明,只要依赖了 'com.google.android.gms:play-services-ads:20.4.0' 以上的版本,该权限会自动合并到主清单。我搞了一天不知道怎么解决这个问题,有没有遇到同样问题的朋友。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-01 08:02
    关注

    引自免费微信小程序:皆我百晓生

    为了解决Google Play报错 com.google.android.gms.permission.AD_ID 权限问题,我们需要检查以下几个步骤:

    1. 确保已添加 Google Ads SDK

      • 首先,确保你的 Android 应用程序已包含 Google Ads SDK 的依赖项。在 AndroidManifest.xml 文件中,添加 <uses-library> 标签,指定你想使用哪个 SDK,例如 <uses-library android:name="com.google.android.gms:admob:id" />
      • 在该项目级别的 build.gradle 文件(如果应用使用 Gradle 编译)中添加 dependencies 属性,并列出以下 Google Ads SDK 模块的依赖项:
      implementation 'com.google.android.gms:admob:20.4.0'
      
    2. 查看兼容性列表

      • 在 Google Play 商店应用开发者页面,点击 "Get an App Preview",选择你要发布的应用进行预览。
      • 查看与 Google Ads SDK 兼容的应用版本信息。在 AndroidManifest.xml 中,添加以下 <uses-sdk><uses-permission> 标签,指出当前应用程序是否支持 Google Ads SDK 的某些功能:
      <uses-sdk version="28">
        <!-- Other dependencies, such as LogCat or API Level -->
      </uses-sdk>
      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      <!-- Add other permission(s) if necessary for your use case -->
      
    3. 检查广告 ID 添加状态

      • 使用 Google Play 商店的广告审核工具(如 ad管理中心Google Ad Manager Console)检查你的 AAB (Application Bundle) 包的 AD ID 是否正确配置。这通常涉及到验证 AD ID 的格式、拼写以及是否已在应用列表中找到相应的 AD ID 项。

      • 确保以下元素存在于 app_name.adb 文件中的权限节点(如 <application><service>),其中包含以下内容:

        <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
        <uses-permission android:name="android.permission.BIND giovark.admob.AdMobService"/>
        <uses-permission android:name="android.permission.BIND giovark.admob.DistributeManagerService"/>
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
        <uses-permission android:name="android.permission.CAMERA"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
        <uses-permission android:name="android.permission.USE_OCTET_STREAM"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        
        <service
           android:name=".AdMobService"
           android:exported="false">
           <intent-filter>
              <action android:name="android.content.Intent.ACTION_DISTRIBUTE_AD[toast]" />
              <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
         </service>
        
        <activity
           android:name=".MainActivity"
           android:exported="true">
           <intent-filter>
             <action android:name="android.content.Intent.ACTION_RECEIVER_REGISTER"/>
             <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
         </activity>
        
         <receiver
           android:name=".BootReceiver"
           android:exported="true">
           <intent-filter>
             <action android:name="android.app.Intent.ACTION_BOOT_COMPLETED"/>
             <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
         </receiver>
        </application>
        
      - 保存并关闭文件后,在 Google Ads SDK 安装目录下创建一个名为 `adb_test.sh` 的脚本,例如:
      ```bash
      #!/bin/bash
      
      AD_ID="your_ad_id"
      
      adb shell am start -a android.intent.action.DISTRIBUTE_AD -c toast -d --data "https://example.com/data.json" -t "/path/to/your/test.apk" $AD_ID
      

      Replace 'your_ad_id' with the actual AD ID you want to distribute and "/path/to/your/test.apk" with the path to your test APK file.

    4. 运行测试脚本

      • 打开终端或命令行界面,通过以下命令运行 adb_test.sh 脚本并执行相应的参数:
      ./adb_test.sh
      
    5. 检查结果

      • 访问 Google Play 商店应用开发者页面查看已下载应用的状态。确保 AAB 包已成功上传至 Google Play 商店,并且在产品详情页中显示 AD ID 项已添加到广告单元列表。

      • 如果发布成功,则应用应已成功在 Google Play 商店上线,用户可以通过搜索您的应用名、应用描述、广告信息等方式访问。

      • 如果存在错误消息,可能涉及以下几种情况:

        a. 广告 ID 已经正确添加但无法正常激活:可能是 AD ID 与应用其他部分冲突,比如服务、框架等组件,导致广告无法正常触发。此时需要排查每个可能造成冲突的组件,并修复冲突问题。

        b. 广告 ID 已经正确添加但无法从 Google Play 下载:可能是因为 Android Studio 项目中的 build.gradle 文件或 .gradle/cargo 文件有问题,阻止了 AD ID 的获取。确认设置环境变量 export ADMOB_DEBUG 后,再重新编译和打包项目。

        c. 客户端代码中误用了或未正确配置 Google Ads SDK,导致 AD ID 不匹配或不生效。检查代码中的相关配置,并确保与 Google Ads SDK 兼容性要求一致。

    若上述步骤均无问题,那么您可能是以下原因导致的报错:

    • 如果检测到 AD ID 正确添加,但手机仍无法在 Google Play 商店发现应用,可能是应用服务器的问题,或者是客户端缓存或网络问题。

    • 如果检测到 AD ID 正确添加但无法下载,可能是客户端存在安全漏洞或 Google Play 商店服务器的防火墙设置阻止了下载。建议重新检查设备系统设置和信任谷歌服务,或者联系 Google Play 商店技术支持获取修复建议。

    1. 更新或重置 Google Ads SDK

      • 对于安卓系统,您可以尝试以下操作来更新或重置 Google Ads SDK:

        a. 卸载 Android 上的 Google Ads SDK,并删除其 /manifest.xml 文件和对应的本地配置文件。

            adb shell pm uninstall -r com.google.android.gms:admob:20.4.0
            rm /path/to/admob-manifest.xml
            rm /path/to/admob-config.xml
            ```
        
        b. 将 `compile 'com.google.android.gms:admob:20.4.0'` 添加回 build.gradle 文件中,并将模块名称更改为与旧版本相同,但不包含 `20.4.0` 的名称:
            ```groovy
            implementation 'com.google.android.gms:admob:3.7.1'
            ```
        
        c. 更新所有依赖项至最新版本:
            ```
            sync project
            ```
        d. 如果更新过程中遇到任何问题,尝试卸载并重新安装 Google Ads SDK。在命令行中输入以下指令:
        ```sh
            cd path/to/your/project
            rm -rf admob.jar admob.jar.dSYM admob-service.jar admob-service.jar.dSYM admob-service.service.jar admob-mediastream.jar admob-mediastream.dSYM admob-play-services-ad-client.jar admob-play-services-ad-player.jar admob-play-services-ad-vungle.jar admob-play-services-ad-wallet.jar
            zip -r admob-updates.zip android-sdk/maven/apache-client-versions/com/google/android/gms/admob/v11-3.7.1.jar
            unzip admob-updates.zip
            mv admob-api.jar admob-mediastream.jar admob-plugin.jar admob-service.jar admob-service.jar.dSYM admob-service.service.jar admob-mediastream.service.jar admob-play-services-ad-client.jar admob-play-services-ad-player.jar admob-play-services-ad-vungle.jar admob-play-services-ad-wallet.jar appcompat-v7.jar ...
            ```
        
        
    2. 重新启动或重启设备

      • 有时候,问题可能源于设备自身或应用程序本身。尝试以下操作确保设备和应用都处于工作状态:
        • 关闭设备或重启设备。
        • 确认设备是否开启静音模式或睡眠模式,以及应用是否正在后台运行。
        • 如果设备尚未启用静音模式或睡眠模式,按照 Google 的指导在设备设置菜单中将其开启。
    3. 检查 Google Play 商店服务授权

      • 有时,由于服务授权问题可能导致 AAB 包无法被 Google Play 商店找到。确保应用在 AndroidManifest.xml 文件中的 service 标签已启用 Google Play 商店服务,并且 Google 商店服务是服务中唯一的授权类,如下所示:
      <service
         android:name=".AdMobService"
         android:exported="false">
         <intent-filter>
           <action android:name="android.content.Intent.ACTION_DISTRIBUTE_AD[toast]" />
           <category android:name="android.intent.category.DEFAULT" />
         </intent-filter>
       </service>
      

      如果服务不是唯一授权类,确保应用下的其他 Service(如 CustomAdView 或 Vector Ads)并未从 Google Play 获取

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月1日