crazecoder / flutter_bugly

腾讯Bugly flutter应用更新统计及异常上报插件,支持Android、iOS
Other
595 stars 163 forks source link

java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.engine.plugins.FlutterPlugin$FlutterPluginBinding.getFlutterEngine()' on a null object reference #97

Closed journe closed 3 years ago

journe commented 3 years ago

与Thrio框架一起使用的时候,在原生页面唤起Flutter页面时就会报错闪退。

     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.engine.plugins.FlutterPlugin$FlutterPluginBinding.getFlutterEngine()' on a null object reference
        at com.crazecoder.flutterbugly.FlutterBuglyPlugin.onAttachedToActivity(FlutterBuglyPlugin.java:197)
        at io.flutter.embedding.engine.FlutterEnginePluginRegistry.attachToActivity(FlutterEnginePluginRegistry.java:315)
        at io.flutter.embedding.android.ThrioFlutterPageDelegate.onResume(ThrioFlutterPageDelegate.java:391)
        at io.flutter.embedding.android.ThrioFlutterActivity.resume(ThrioFlutterActivity.java:585)
        at io.flutter.embedding.android.ThrioFlutterActivity.onResume(ThrioFlutterActivity.java:565)

    @Override
    public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
        activity = binding.getActivity();
        channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "crazecoder/flutter_bugly");
        channel.setMethodCallHandler(this);
    }
journe commented 3 years ago

environment: sdk: ">=2.7.0 <3.0.0" flutter: '1.22.3'

crazecoder commented 3 years ago

这边测试新建一个activity跳转到flutter界面没有问题

journe commented 3 years ago

可能是个例...我先关了吧,但是确实在去除了bugly之后应用是可以正常跑起来的

journe commented 3 years ago

将onAttachedToActivity 中的以下逻辑

   channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "crazecoder/flutter_bugly");
    channel.setMethodCallHandler(this);

移动到onAttachedToEngine中,则不会再报错了。

可能和项目结构有关,我的项目是native为主flutter作为submodule。 而thrio项目和bugly的示例是flutter为主项目。 我觉得问题原因在于Thrio的flutter容器activity的父类不是FlutterActivity。