flutter_qq icon indicating copy to clipboard operation
flutter_qq copied to clipboard

Android闪退问题修复

Open litang0908 opened this issue 5 years ago • 3 comments

最近升级项目Flutter版本后,突然发现在 Android 调用 flutter_qq 闪退(无论是登录还是取消登录,均会闪退),因此尝试做了修复,并且提交了 Pull Request https://github.com/marekchen/flutter_qq/pull/33 ,需要等待作者合并。

此项目作者可能比较忙,暂时将解决方案贴在此处。

关联ISSUE

#21 #22
#23
#25
#27
#29
#31
#32

闪退日志

Caused by: java.lang.IllegalStateException: Reply already submitted
at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:139)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success(MethodChannel.java:231)
at com.github.marekchen.flutterqq.FlutterQqPlugin$OneListener.onComplete(FlutterQqPlugin.java:203)
at com.tencent.connect.common.UIListenerManager.onActivityResult(ProGuard:212)
at com.tencent.tauth.Tencent.onActivityResultData(ProGuard:403)
at com.github.marekchen.flutterqq.FlutterQqPlugin$OneListener.onActivityResult(FlutterQqPlugin.java:236)
at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:691)
at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:378)
at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:597)
at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:582)
at android.app.Activity.dispatchActivityResult(Activity.java:7590)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4416)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4465)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

错误原因

FlutterQqPlugin.java 中的 OneListener 实例多次创建,会导致 QQ SDK 处理错误,只需要在 FlutterQqPlugin.java 中设置一个 OneListener 实例即可,具体改动可见 https://github.com/litang0908/flutter_qq/commit/339c11867abe090f2e5fbd4561f74e3276de8615

解决方案

  1. git clone 这个 repo https://github.com/litang0908/flutter_qq ,此fork自原项目,且做了修复

  2. 将你自己项目配置的 flutter_qq 依赖,改为步骤1中clone的仓库地址

flutter_qq: ^0.0.5

改为

flutter_qq:
    path: ../codes/github/flutter_qq/
(注:此处路径为步骤1中clone项目相对位置)

重新执行 flutter pub get 后运行项目即可。

litang0908 avatar Nov 02 '20 20:11 litang0908

666666666

wang-zeqi avatar Nov 09 '20 01:11 wang-zeqi

是不是需要把这个项目clone自己的项目中

zhangji92 avatar Dec 10 '20 02:12 zhangji92

是不是需要把这个项目clone自己的项目中

是的,copy到你的项目下面,路径按照你自己的相对路径配置即可

litang0908 avatar Apr 06 '21 11:04 litang0908