应用无法拉起微信登录的异常排除
最近在华为android 10机型上碰到拉不起微信登录的问题。根据官方常见问题,对以为下几项进行一一排除:
调用wxapi.sendReq接口,返回true,但微信客户端并未启动,请检查以下几项:
1)微信是否安装
2)调用时的Apk包名和签名是否与开放平台填写的一致,签名请使用该工具:点击下载,常发生在安装了debug版本又安装release版本情况,确定包名签名后卸载微信重装或者清除微信数据再做测试
3)检查发送时的缩略图大小是否超过32k
4)能够调起微信到选择好友列表,但是点击发送后无响应,请检查proguard配置是否对微信SDK代码进行了混淆,建议不要对SDK对混淆,参考以下proguard配置:
-keep class com.tencent.mm.opensdk.** { *; } -keep class com.tencent.wxop.** { *; } -keep class com.tencent.mm.sdk.** { *; }
检查发现,有装微信,不涉及缩略图,没有混淆。
那明显只有第2点符合了。
包名与签名是一致的,因为其它手机可以正常登录。
尝试清除微信数据,无效。
删除微信重装,竟然好了。
到这原以为是微信的锅,但是忽然看到重新安装微信后,系统会提示是否将微信加入华为手机支付保护中心。
因为之前是加入的(加入后右下角会有个角标),于是点加入后再尝试登录,发现又无法登录了,收不到微信回调,关掉后会恢复正常……
结论:华为手机支付保护中心有可能会拦截应用调起微信登录(请求或回调?),导致无法成功登录。
至于拦截的规则,那就不得而知了,只有某些应用会被拦截。
获取APK的targetSdkVersion及minSdkVersion
1.使用aapt工具:
aapt list -a app.apk | grep SdkVersion显示的结果为16进制
或:
aapt dump badging app.apk|grep Version
2.使用apktool:
java -jar apktool.jar d app.apk
然后查看生成的apktool.yml文件的sdkInfo字段即可