Android签名构建中Pusher无法连接服务器的解决方案咨询
Android签名构建后Pusher连接异常排查建议
检查签名证书哈希值配置
Pusher后台需要绑定应用签名证书的SHA-1/SHA-256值,未签名构建用的是debug证书,签名构建用的是release证书,两者哈希值完全不同。操作步骤:- 用命令生成release证书的哈希值:
keytool -list -v -keystore 你的签名文件路径 -alias 证书别名 - 登录Pusher控制台,进入对应应用的Settings > Android页面,添加release证书的SHA-1和SHA-256值
- 用命令生成release证书的哈希值:
确认构建变体的密钥匹配
确保release构建使用的是对应环境的Pusher密钥,不要在release包中混用debug密钥。可以通过BuildConfig区分配置:buildTypes { debug { buildConfigField("String", "PUSHER_APP_KEY", "\"debug_app_key\"") buildConfigField("String", "PUSHER_SECRET_KEY", "\"debug_secret_key\"") } release { buildConfigField("String", "PUSHER_APP_KEY", "\"release_app_key\"") buildConfigField("String", "PUSHER_SECRET_KEY", "\"release_secret_key\"") minifyEnabled true shrinkResources true } }代码中通过
BuildConfig.PUSHER_APP_KEY获取对应环境的密钥。添加Pusher SDK混淆规则
如果release构建开启了代码混淆,必须在proguard-rules.pro中保留Pusher相关类,避免SDK被错误混淆导致功能异常:-keep class com.pusher.** { *; } -keep class okhttp3.** { *; } -keep class okio.** { *; } -keepattributes Signature验证网络权限与安全配置
- 确保AndroidManifest.xml中已添加必要网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - 针对Android 9及以上版本,若使用Pusher的HTTP连接,需配置网络安全策略允许明文流量。在
res/xml/network_security_config.xml中添加:
并在AndroidManifest的application标签中引用:<network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">pusher.com</domain> </domain-config> </network-security-config>android:networkSecurityConfig="@xml/network_security_config"
- 确保AndroidManifest.xml中已添加必要网络权限:
开启日志定位具体错误
在release构建中开启Pusher调试日志,捕获连接失败的具体原因:val options = PusherOptions().apply { logLevel = Pusher.LogLevel.DEBUG } val pusher = Pusher(BuildConfig.PUSHER_APP_KEY, options)通过adb命令查看日志:
adb logcat -s Pusher,根据日志中的错误提示(如认证失败、连接超时、证书不匹配等)针对性解决。
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

