应用发布至AppGallery后Huawei Push Kit无法正常工作的原因咨询
我来帮你排查这个问题,这种Android Studio直接运行正常、但AppGallery发布版本收不到推送的情况,通常是以下几个关键环节出了问题:
签名指纹不匹配
Android Studio调试时用的是调试签名文件(一般是debug.keystore),而发布到AppGallery的版本用的是正式发布签名。华为Push Kit需要在AppGallery Connect后台配置对应签名的SHA256指纹,如果后台只配置了调试签名的指纹,发布版本的签名校验不通过,就会导致推送无法送达。
解决办法:把你用于发布的签名文件的SHA256指纹添加到AppGallery Connect的项目设置中,确保和发布包的签名完全一致。混淆规则遗漏
发布版本一般会开启代码混淆,如果你的proguard-rules.pro文件中没有添加华为Push Kit的混淆豁免规则,相关的推送类会被混淆破坏,导致功能失效。
解决办法:在混淆规则里添加以下内容:-ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hms.** {*;} -keep interface com.huawei.hms.** {*;}agconnect-services.json未同步
如果发布前没有将AppGallery Connect后台最新生成的agconnect-services.json文件替换到你的发布包工程中,或者后台的应用配置(比如包名、签名信息)更新后没有重新下载配置文件,会导致发布包和后台配置不匹配,推送服务无法正常初始化。
解决办法:重新从AppGallery Connect下载最新的agconnect-services.json,替换到工程的app模块根目录下,再重新打包发布。推送权限未正确配置
对于Android 13及以上版本,需要申请POST_NOTIFICATIONS权限才能显示推送通知。Android Studio调试时可能自动帮你处理了权限申请,但发布版本需要在Manifest中声明权限,并在代码中动态申请。
解决办法:在AndroidManifest.xml中添加权限声明:<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />同时在应用启动或合适时机动态申请该权限。
HMS Core版本兼容性问题
部分用户设备上的HMS Core版本过低,或者未安装HMS Core,而你的测试设备上的HMS Core版本是兼容的,导致发布版本无法正常和推送服务通信。
解决办法:可以在应用中添加HMS Core版本检测逻辑,提示用户更新到兼容的HMS Core版本;同时确保你集成的Push Kit版本和目标设备的HMS Core版本兼容。
内容的提问来源于stack exchange,提问作者Faizan Ahmad

