出现Cocos的Android原生崩溃的现象

  • Creator 版本:3.7.0

  • Android,在小米,Vivo,三星,Android 9,Android 11,Android 12上都出现过崩溃

  • 重现方式:google的崩溃日志出现,本地实际测试没出现

  • 首个报错:

Caused by java.lang.NullPointerException

Attempt to invoke virtual method ‘android.content.res.Resources android.content.Context.getResources()’ on a null object reference

keyboard_arrow_up

android.view.ViewConfiguration.get (ViewConfiguration.java:545)

android.view.View. (View.java:5353)

android.view.View. (View.java:5513)

android.view.ViewGroup. (ViewGroup.java:750)

android.widget.RelativeLayout. (RelativeLayout.java:255)

android.widget.RelativeLayout. (RelativeLayout.java:251)

android.widget.RelativeLayout. (RelativeLayout.java:247)

android.widget.RelativeLayout. (RelativeLayout.java:243)

arrow_right

com.cocos.lib.CocosEditBoxActivity.addButton (未知来源:36)

com.cocos.lib.CocosEditBoxActivity.addItems (未知来源:8)

com.cocos.lib.CocosEditBoxActivity.onCreate (未知来源:43)

android.app.Activity.performCreate (Activity.java:8385)

android.app.Activity.performCreate (Activity.java:8363)

android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1379)

android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3912)

android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4096)

android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103)

android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)

android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)

android.app.ActivityThread$H.handleMessage (ActivityThread.java:2441)

android.os.Handler.dispatchMessage (Handler.java:106)

android.os.Looper.loopOnce (Looper.java:233)

android.os.Looper.loop (Looper.java:334)

android.app.ActivityThread.main (ActivityThread.java:8399)

java.lang.reflect.Method.invoke (Method.java)

com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:582)

com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)

根据提供的错误信息,这是一个 java.lang.NullPointerException 异常,原因是在调用 android.content.Context.getResources() 方法时,出现了空对象引用的情况。

根据错误堆栈信息,异常发生在 com.cocos.lib.CocosEditBoxActivity.addButton 方法中的第 36 行。这可能是由于在该方法中使用了一个空的 Context 对象导致的。

要解决这个问题,您可以检查 CocosEditBoxActivity 类中的 addButton 方法,确保在调用 getResources() 方法之前, Context 对象不为空。您还可以检查相关的上下文传递,确保正确传递了有效的上下文对象

image

使用的GlobalObject.getActivity()
image
GlobalObject.setActivity是在CocosActivity的onCreate中初始化的

image

从源码来看的话 CocosEditBoxActivity 的初始化早于了 CocosActivity

没有人回答这个问题?好难过

一是用排除法试,把场景简化到没崩溃为止。
二是崩溃的原因并不是因为报错的原因,多半是因为cocos太垃圾了,比如你的定时器里的方法出错了就闪崩,点击按钮的方法出错了就闪崩,这个问题我早就提过,但人家就是不修,所以直接修源代码吧。

问题的关键还没办法重现,这个是firebase的crashlytics捕捉到的,本地不知道怎么出现的,我自己分析了一下,有些手机在初始化应用时,优先初始化了CocosEditBoxActivity,CocosActivity还没有,就导致了这个问题