flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference

Open ghost opened this issue 4 years ago • 10 comments

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tencent.wemeet.app/com.idlefish.flutterboost.containers.BoostFlutterActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at com.idlefish.flutterboost.containers.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:89)
    at com.idlefish.flutterboost.containers.BoostFlutterActivity.onCreate(BoostFlutterActivity.java:145)
    at android.app.Activity.performCreate(Activity.java:8085)
    at android.app.Activity.performCreate(Activity.java:8073)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3870)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

  1. ...
  2. ...
  3. ...

Flutter Boost Version 1.17.1 Target Platform:. mac Target OS version/browser: android Devices: 荣耀

Logs

add your crash log or something else.

ghost avatar Dec 21 '20 03:12 ghost

ths same problem on samsug s7

coderloveryan avatar Dec 24 '20 10:12 coderloveryan

init flutterboost in my application solve it

coderloveryan avatar Dec 24 '20 10:12 coderloveryan

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tencent.wemeet.app/com.idlefish.flutterboost.containers.BoostFlutterActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at com.idlefish.flutterboost.containers.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:89)
    at com.idlefish.flutterboost.containers.BoostFlutterActivity.onCreate(BoostFlutterActivity.java:145)
    at android.app.Activity.performCreate(Activity.java:8085)
    at android.app.Activity.performCreate(Activity.java:8073)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3870)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

  1. ...
  2. ...
  3. ...

Flutter Boost Version 1.17.1 Target Platform:. mac Target OS version/browser: android Devices: 荣耀

Logs

add your crash log or something else.

按 example里的方式初始化的吗?

nightfallsad avatar Dec 25 '20 09:12 nightfallsad

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tencent.wemeet.app/com.idlefish.flutterboost.containers.BoostFlutterActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at com.idlefish.flutterboost.containers.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:89)
    at com.idlefish.flutterboost.containers.BoostFlutterActivity.onCreate(BoostFlutterActivity.java:145)
    at android.app.Activity.performCreate(Activity.java:8085)
    at android.app.Activity.performCreate(Activity.java:8073)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3870)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

  1. ...
  2. ...
  3. ...

Flutter Boost Version 1.17.1 Target Platform:. mac Target OS version/browser: android Devices: 荣耀

Logs

add your crash log or something else.

按 example里的方式初始化的吗?

上下文使用的application的上下文。在启动的task线程里面初始化的。非必先bug。

ghost avatar Dec 25 '20 09:12 ghost

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tencent.wemeet.app/com.idlefish.flutterboost.containers.BoostFlutterActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3897)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:219)
    at android.app.ActivityThread.main(ActivityThread.java:8349)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.idlefish.flutterboost.Platform.whenEngineStart()' on a null object reference
    at com.idlefish.flutterboost.containers.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:89)
    at com.idlefish.flutterboost.containers.BoostFlutterActivity.onCreate(BoostFlutterActivity.java:145)
    at android.app.Activity.performCreate(Activity.java:8085)
    at android.app.Activity.performCreate(Activity.java:8073)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3870)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4076) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2473) 
    at android.os.Handler.dispatchMessage(Handler.java:110) 
    at android.os.Looper.loop(Looper.java:219) 
    at android.app.ActivityThread.main(ActivityThread.java:8349) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

  1. ...
  2. ...
  3. ...

Flutter Boost Version 1.17.1 Target Platform:. mac Target OS version/browser: android Devices: 荣耀

Logs

add your crash log or something else.

嗯,应该是执行顺序的关系

nightfallsad avatar Dec 28 '20 06:12 nightfallsad

native项目中嵌套flutter,当在flutter打开的native页面崩溃后,比如那种无法捕获的so崩溃,然后再返回到这个flutterAcitivity时就会无限循环的报这个空指针异常,怎么解?

zouxiuxin avatar Dec 30 '20 02:12 zouxiuxin

在启动的task线程里面初始化的。非必先bug。

查到原因了吗?应该还是初始化方式的问题,初始化失败了

nightfallsad avatar Jan 08 '21 07:01 nightfallsad

我也出了同样的问题,不知道怎么解决

IOCloudFly avatar Feb 04 '21 09:02 IOCloudFly

不要把flutterboost初始化的代码放在子线程中,在Application的onCreate初始化就可以了,如果担心APP启动耗时过长,可以设置为 FlutterBoost.ConfigBuilder.FLUTTER_ACTIVITY_CREATED,在首次打开flutter页面时再初始化引擎

lenva avatar Mar 03 '21 08:03 lenva

我这边也遇到了类似情况: 如果你的FlutterBoost初始化配置是: FlutterBoost.ConfigBuilder.IMMEDIATELY 立即初始化,然后又对引擎初始化做懒加载(即只有打开Flutter页面才去立即初始化),这时候会存在一个场景如果打开的当前Flutter页面退到后台,在内存不足或资源紧张情况下APP进程会被杀死,当你从后台再切回前台时,实际上相当于启动了一个新的进程,这是直接打开Flutter页面就会报这个NPE异常,这是因为引擎没有走初始化,flutterBoost中绑定的platform为null导致了NPE。可以考虑在页面onCreate时再做一次check

BayMikyou avatar Apr 21 '22 11:04 BayMikyou