尝试将我的应用程序提交到 Play 商店时遇到以下错误:
您在 Play 管理中心上的声明表明您的应用使用广告 ID。您的清单文件不包含 com.google.android.gms.permission.AD_ID 权限。
我已经在我的
AD_ID
文件中声明了AndroidManifest.xml
权限,如下:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
我的应用程序的
targetSdk
版本是 33
,我包含的 AdMob 广告库版本是 21.3.0
,如下:
implementation 'com.google.android.gms:play-services-ads:21.3.0'
我已按照 AdMob 入门 指南中的每一步操作,但不起作用。
我遇到了这个问题,我解决了。问题是您的依赖项之一(可能是 Firebase)在构建过程中强制将此权限插入清单中。 IE。手动制作文件后。您可以在清单中添加指令以在流程结束时删除权限,然后将其上传到商店时就不会出现问题。
您需要将其添加到您的
manifest
但在 application
之外
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
但是,您还需要添加
tools
XML 命名空间,否则构建将失败。这位于根manifest
节点内部
xmlns:tools="http://schemas.android.com/tools"
您还可以在上传到 Google Play 商店之前检查清单。只需将 apk/appbundle 重命名为 .zip ,解压文件并检查清单文件的内容即可。
Firebase Analytics 正在使用
com.google.android.gms.permission.AD_ID
权限来跟踪用户。(https://support.google.com/analytics/answer/11593727?hl=en)
您可以删除添加到清单中的权限
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />
但这可能会使您的使用统计数据无效
对于上传的针对 Android 13 的应用程序,您必须:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
。我们面临的问题是我们的应用程序中没有使用任何广告,但 Firebase 核心库需要广告库。因此,在 gradle 中,我们从构建中删除该库,如下所示:
gmsImplementation ('com.google.firebase:firebase-core') {
exclude group: 'com.google.android.gms', module: 'play-services-ads-identifier'
}
我也遇到这个问题了。还没有修复。
编辑:
似乎其他人也遇到了这个问题。
在阅读此 reddit 帖子时,一位用户提到问题出在 Play Console 团队这边,每个人都面临着这个问题。
他们还将他们的应用程序发布到生产环境,一切都很好,因此可以忽略错误警告。
Firebase 文档建议禁用 AD_ID 权限,将以下内容添加到清单中:
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
较旧的线程建议排除
播放服务广告标识符
来自以下所有依赖项:
// Firebase
implementation platform('com.google.firebase:firebase-bom:26.6.0')
implementation ('com.google.firebase:firebase-core') {
exclude group: 'com.google.android.gms', module : 'play-services-ads-identifier'
}
implementation ('com.google.firebase:firebase-messaging') {
exclude group: 'com.google.android.gms', module : 'play-services-ads-identifier'
}
implementation ('com.google.firebase:firebase-crashlytics') {
exclude group: 'com.google.android.gms', module : 'play-services-ads-identifier'
}
implementation ('com.google.firebase:firebase-analytics') {
exclude group: 'com.google.android.gms', module : 'play-services-ads-identifier'
}
前面的答案中提到的另一个解决方案是从清单中删除权限节点:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
我还不知道每个解决方案的复制品,但有同样的问题,我要测试它们。
更新
这篇文章的第四个答案如果您想收集分析数据并且不更改代码,这可能是最好的方法 您可以选择“是”来判断您的应用是否有 AD_ID,然后选择“分析”作为原因。我
所有的答案都是关于所问问题的吗?问题指出您声明了 AD_ID,但它不在您的清单文件中。不是相反...