Android 16中MediaPlayer引发attributionTag未在Manifest声明的问题咨询
解决Android 16中MediaPlayer引发的"attributionTag not declared in manifest"错误日志
问题场景
日志中反复出现以下错误条目:
2025-07-31 10:56:31.326 1709-5052 AppOps system_server E attributionTag not declared in manifest of XXXX 2025-07-31 10:56:31.327 1709-2137 AppOps system_server E attributionTag not declared in manifest of XXXXX
该问题出现在使用MediaPlayer.create(context, alarmResourceId)加载raw目录下的ogg格式资源时,是Android 16新增的问题,此前版本未出现,且Manifest中未配置过任何attribution相关标签。
解决方案
Android 16(API 36)新增了媒体操作的归因标签强制要求,只需在Manifest中添加以下配置即可消除错误:
方式一:配置应用全局默认归因标签
在<application>标签内添加android:defaultAttributionTag属性,自定义一个标签名称即可:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:defaultAttributionTag="app_media_default" <!-- 新增这一行 --> ...> <!-- 其他组件声明 --> </application>
方式二:为特定组件单独配置归因标签
如果需要针对使用MediaPlayer的组件(比如播放音频的Activity/Service)单独设置,可在对应组件标签内添加android:attributionTag:
<activity android:name=".AlarmPlaybackActivity" android:attributionTag="alarm_media_attribution" <!-- 新增这一行 --> ...> </activity>
原因说明
Android 16开始,系统要求所有媒体相关操作必须携带归因标签,用于追踪媒体资源的使用来源。当调用MediaPlayer.create()时,系统会自动从上下文对应的组件或应用全局配置中获取归因标签,若两者都未配置,就会触发该错误日志。
内容的提问来源于stack exchange,提问作者de11833
相关产品推荐
相关产品推荐

