未使用Google移动广告却检测到AD_ID权限,该如何处理?
解决未使用Google Mobile Ads但Play Console显示AD_ID权限的问题
问题原因
你并未手动声明com.google.android.gms.permission.AD_ID权限,它是由项目中的第三方依赖库间接引入的——比如Firebase系列SDK或purchases_flutter这类库,可能依赖了Google Play Services的广告相关模块,导致权限被自动合并到最终的AndroidManifest中。
解决步骤
修改AndroidManifest.xml移除权限
首先在manifest标签中添加tools命名空间,然后明确声明移除AD_ID权限:修改后的AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.xxxxx"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.VIBRATE"/> <!-- 移除自动引入的AD_ID权限 --> <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/> <application android:label="xxxx" android:name="${applicationName}" android:requestLegacyExternalStorage="true" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> </manifest>tools:node="remove"会强制移除该权限,不受依赖库的自动引入影响。验证权限是否已移除
构建应用后,可通过以下命令查看合并后的权限列表,确认AD_ID权限已消失:flutter build apk --release aapt dump permissions build/app/outputs/apk/release/app-release.apk可选:排查依赖来源
若想定位是哪个依赖引入了AD_ID权限,可运行以下命令查看完整依赖树:flutter pub deps --tree查找包含
play-services-ads或ads相关的依赖节点即可确定来源。
内容的提问来源于stack exchange,提问作者Tdayo
相关产品推荐
相关产品推荐

