little-snow-fox / react-native-wechat-lib

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android
MIT License
667 stars 129 forks source link

解决Android11及以上机型无法使用的问题 #215

Open atypiape opened 1 year ago

atypiape commented 1 year ago

之前一直在老机子上调试,没啥问题。昨天发了个测试包,几个同事反馈无法进行微信登录。排查了一番,感觉是SDK的问题,在微信官方文档找到了答案:

关于openSDK6.8.0的更新说明

微信将于近期发布 targetSdkVersion 30的客户端版本,因Android11系统特性,该微信版本在Android 11及以上系统版本的设备上运行时,授权登录、分享、微信支付等功能受到影响,可能无法正常使用。为了适配 Android 系统新版本特性,保证微信功能正常使用,请第三方应用2021年11月1日之前进行更新,点击查看更新指引

我自己根据文档,对 react-native-wechat-lib 代码做了点小修改,并用 patch-package 打了补丁,在此也让同样遇到问题的小伙伴了解一下。

主要几处修改:

  1. 在自己 React Native 项目的 android/app/src/main/AndroidManifest.xml 中添加:
     <queries>
        <!-- 
          微信 Android 11-更新 openSDK 适配
          参见 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html#jump2
        -->
        <package android:name="com.tencent.mm" />
    </queries>
  1. 修改 react-native-wechat-lib 下的 android/app/build.gradle,修改 Android SDK Build-Tools 的版本号并引入新版微信 SDK:

修改版本号

// 原来的 23 改为 30 及以上,我这边的环境是 31
compileSdkVersion safeExtGet('compileSdkVersion', 31)
  buildToolsVersion safeExtGet('buildToolsVersion', '31.0.0')

  defaultConfig {
    minSdkVersion safeExtGet('minSdkVersion', 21)
    // 这里也改掉
    targetSdkVersion safeExtGet('targetSdkVersion', 31)
  .........

引入新版微信 SDK

dependencies {
  api 'com.facebook.react:react-native:+'
  // 这一行注释掉
  // api files('libs/libammsdk.jar')
  // 添加下面这一行
  api 'com.tencent.mm.opensdk:wechat-sdk-android:+'
}

大致是这样修改,具体参见微信官方文档!

little-snow-fox commented 1 year ago

谢谢,我会把它整合到 3.0.1 版本中

atypiape commented 1 year ago

谢谢,我会把它整合到 3.0 版本中

棒!!!

izozo commented 6 months ago

你好,请问我这边RN版本0.57的可以使用最新的3.0.4版本吗 因为项目比较老 ,升级怕出现其他问题

atypiape commented 6 months ago

你好,请问我这边RN版本0.57的可以使用最新的3.0.4版本吗 因为项目比较老 ,升级怕出现其他问题

先升级试试,打个包测试一下看看