微信授权无法识别分身的解决办法

华为无法识别微信分身的解决办法


解决方案: com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+ 将 + 改为 6.6.4。

处理过程如下
接到用户反馈,华为手机下,我们的游戏在用户授权时无法识别分身。
第一步,工欲善其事,必先利其器。不能不信邪,先看相关知识。

  1. 了解一下Activity的启动模式,怎样通过Intent来启动一个Activity。
  2. 了解一下Manifest的对微信 WXEntryActivity 的配置。Android是将安装应用的Manifest进行集中键值管理,然后在发生 WXEntryActivity 调用的时候,去将对应的 Activity 显示出来。
  3. 简单了解了一下华为的分身实现模式。这方面的资料不多,设身处地的想一下,如果是要让我来实现,我会怎么做,猜测然后印证。我猜是在启动 Activity 的时候,做了一个监听识别,判断是否是分身对应的 Activity,然后做后续的弹窗处理。所以,主要查看启动WXEntryActivity时的Log信息。
  4. 到微信开发者平台查阅关于分身的信息。结果,发现微信是不推荐分身的,也不会对其进行技术支持。也就是说分身是手机开发商为了给用提供便利而开发的功能。
  5. gradle是个构建工具,所以,gradle的版本不会对工程的结果有太大的影响,排除掉它。gradle依赖微信SDK的方式,是官方推荐的方式,如下:(伏笔)
  dependencies {
      api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
  }
  1. 下载微信官方实例,分身可以正常识别。

第二步,比对Apk差异

  1. 比对manifest文件,安装 apktool 分别对新旧包进行解包,判断是否是微信 WXEntryActivity 配置的原因。发现是一致的。
  2. 官网下载apktool,https://ibotpeaches.github.io/Apktool/。切换到安装方法页面,https://ibotpeaches.github.io/Apktool/install/。
  3. 比对安卓运行日志,将比对内容缩短在手指点击触发SDK调用到拉起微信 WXEntryActivity 这一部分。
    MicroMsg.SDK.MMessageAct: send, targetPkgName = com.tencent.mm, targetClassName = com.tencent.mm.plugin.base.stub.WXEntryActivity
    I/MicroMsg.SDK.MMessageAct: sendUsingPendingIntent //新的SDK使用这个模式启动,这个是唯一的区别。
  1. 通过Log判断,得到SDK的Intent调起Activity的方式变化了,采用的PendingIntent的方式,所以,是SDK发生了变化。但是,我们没有修改过build.gradle,SDK的依赖没有调整过,为什么会有变化呢?
    第三步,万恶的:+
  2. 依赖SDK的方式:api ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’
  3. :+代表的是最新版,也就是说按照官方提供的文档,你使用的SDK将和官方同步。所以,官方修改了SDK的调用模式,华为无法识别Activity,就无法触发分身。因为,官方不推荐分身,所以,不会照顾兼容性。
  4. 将:+改为:6.6.4,为最后一个可使用分身的微信SDK版本。至此,问题解决。
  5. 微信官方实例,之所以能正常识别分身的原因是,它使用的SDK是指定版本的,不是:+。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值