Android闪退问题修复
最近升级项目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
解决方案
-
git clone这个 repo https://github.com/litang0908/flutter_qq ,此fork自原项目,且做了修复 -
将你自己项目配置的
flutter_qq依赖,改为步骤1中clone的仓库地址
flutter_qq: ^0.0.5
改为
flutter_qq:
path: ../codes/github/flutter_qq/
(注:此处路径为步骤1中clone项目相对位置)
重新执行 flutter pub get 后运行项目即可。
666666666
是不是需要把这个项目clone自己的项目中
是不是需要把这个项目clone自己的项目中
是的,copy到你的项目下面,路径按照你自己的相对路径配置即可