华为Android Push SDK适配targetSdk 31版本发布时间及适配问题问询
华为Android Push SDK targetSdk 31适配版本说明
支持targetSdk 31的华为Android Push SDK正式版为6.1.0.300版本,已于2022年第一季度正式对外发布,所有高于该版本的Push SDK均已完成Android 12(API 31)的规则适配。
安卓12的系统构建规则强制要求,所有声明了
<intent-filter>的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)必须显式标注android:exported属性,未适配的旧版本华为Push SDK内置Manifest组件未声明该属性,因此当应用targetSdk设置为31时会出现编译错误或运行崩溃。
你可以选择以下两种方案解决问题:
- 方案1(推荐):直接升级华为Push SDK到
6.1.0.300及以上版本,SDK内部已经对所有组件默认添加了正确的exported属性配置,无需开发者额外修改SDK相关的Manifest条目即可正常编译运行。 - 方案2(临时兼容方案,适合暂时无法升级SDK的场景):在项目主
AndroidManifest.xml中手动覆盖SDK内未声明exported的组件,补全属性配置,示例配置如下:
<!-- 补全Push SDK内置Receiver的exported属性示例 --> <receiver android:name="com.huawei.hms.push.PushReceiver" android:exported="true"> <intent-filter> <action android:name="com.huawei.android.push.intent.REGISTRATION" /> <action android:name="com.huawei.android.push.intent.RECEIVE" /> <action android:name="com.huawei.android.push.intent.CLICK" /> </intent-filter> </receiver> <!-- 自定义Push消息接收服务也需要补全属性 --> <service android:name=".YourCustomHmsMessageService" android:exported="false"> <intent-filter> <action android:name="com.huawei.hms.push.action.MESSAGING_EVENT" /> </intent-filter> </service>
注意:自定义的Push相关组件如果包含<intent-filter>,必须根据实际调用场景设置exported值:仅允许内部/SDK调用的组件设置为false,需要对外暴露给第三方应用调用的设置为true。
内容的提问来源于stack exchange,提问作者Denis A
相关产品推荐
相关产品推荐

