這個問題很憂傷,折騰了2個月,終於找到了本質的原因。
首先描述一下我們項目遇到的現象,供遇上的朋友們參考。
1、華爲Mate 20 Mate30出現問題,其他機型沒有用戶彙報
2、華爲Mate30中,同一款機型,有的機型可以,有的機型不可以。
3、同一個手機,上午可以,下午不可以。(在未卸載APP且APP也沒有更新的情況下)
我想當大家看到第三個現象的時候,有沒有一種要****的感覺。
這裏要感謝親切的微信SDK官方文檔,文檔告訴我們兩件事
1、Android 8.0以上機制修改,請大家儘快升級微信SDK,舊SDK信息將會逐步收回
2、國內外廠商要求Android APK提交時,targetSdkVersion不得低於26,也就是Android 8.0
微信官方SDK接入文檔告訴我們,只需要加入下面的依賴庫就可以了
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+
但是,Mate30確實出現了上面的現象。於是我找了很多朋友的APK來測試,發現別人的都可以。對比後發現,別人的配置是下面這樣的。
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.0.2'
果斷換上後,發現還是不對。正當我想哭的時候,有文章提到微信會緩存授權信息。
於是我卸載了微信重新安裝,再次登錄。成功了。
綜上所述,接入新版SDK的步驟
1、添加 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.0.2' 依賴
2、代碼該怎麼寫就怎麼寫
3、如果之前試過不能登錄的手機,卸載微信或者換一個微信賬號再試
4、createWXAPI最後一個參數給true或者false目前並未發現差異
5、Android Studio打包的時候,簽名可以只選V1,也可以V1和V2一起選。(不能單獨選V2,選只V2,低於Android 7.0的手機安裝不了)
至於華爲一會兒可以,一會兒不可以的問題,天知道。 但是換成新版本SDK後,就穩定了。 我猜是微信授權服務器的鍋。