所以,我一直在使用 Visual Studio 2019 在 Urhosharp 上开发 Android 游戏。几个月来,它在旧的 Android (Java) 版本上运行良好,在模拟器和三星 S9+ 等设备上都没有问题。 现在已经在新的 S23 Ultra 上试过了,它似乎可以工作。大约 3 周后,应用程序开始挂起。虽然断断续续,但一个周末内有 3 次。查看 Logcat 消息,有两种类型的致命消息(尽管它们与挂起不一致):
类型 1:
03-24 12:44:31.883 10112 10112 F DEBUG : Abort message: 'JNI DETECTED ERROR IN APPLICATION: mid == null
03-24 12:44:31.883 10112 10112 F DEBUG : in call to CallIntMethod
类型 2:
03-27 17:22:01.918 9619 9619 F DEBUG : Abort message: 'JNI DETECTED ERROR IN APPLICATION: JNI CallIntMethod called with pending exception java.lang.NoSuchMethodError: no non-static method
显而易见的是,Ultra 有 3 周没有挂起,也没有记录任何致命消息。这表明进行了导致此问题的更改 - 所做的主要更改是将一些 Xamarin.Forms 控件添加到 MainPage.xaml.
我现在已经回到这些更改之前的应用程序版本以再次测试。到目前为止没有问题,现在至少应该有一条致命消息。我希望可以通过反复试验找到令人反感的更改,但我并不期待这样。但是一想到分析堆栈跟踪,我也没有高兴得跳起来,即使我可以,问题似乎很可能是 urho/xamarin 使用 Java 7 而 Ultra 是 Java 8。
我不能使用 Java 8,因为 xamarin.forms 不会针对它构建。也许将 Visual Studio 从 2019 年更新到 2022 年?然而,Urhosharp 没有直接的 VS 支持 (NuGet),尽管一位 MS 专家认为它应该可以开始工作。但即使我可以,它解决这个问题的可能性有多大?
另一件令人费解的事情是致命消息不会使应用程序崩溃,这可能是由于在 ErrorExit 之后直接运行命令?
03-24 12:44:31.884 10112 10112 F DEBUG : #10 pc 000000000087d72c /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (Urho3D::Application::Run()+400) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
哦,是的,当应用程序确实挂起时,没有相关的致命消息,但我希望两者无论如何都已连接。
我在下面放了一个堆栈跟踪,以防它对其他人比我更重要。
03-24 12:44:31.191 9887 10032 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 10032 (SDLThread), pid 9887 (mpanyname.xxxxx)
03-24 12:44:31.883 10112 10112 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-24 12:44:31.883 10112 10112 F DEBUG : Build fingerprint: 'samsung/dm3qxeea/dm3q:13/TP1A.220624.014/S918BXXS1AWBM:user/release-keys'
03-24 12:44:31.883 10112 10112 F DEBUG : Revision: '13'
03-24 12:44:31.883 10112 10112 F DEBUG : ABI: 'arm64'
03-24 12:44:31.883 10112 10112 F DEBUG : Processor: '1'
03-24 12:44:31.883 10112 10112 F DEBUG : Timestamp: 2023-03-24 12:44:31.325878663+0100
03-24 12:44:31.883 10112 10112 F DEBUG : Process uptime: 2s
03-24 12:44:31.883 10112 10112 F DEBUG : Cmdline: com.companyname.xxxxx
03-24 12:44:31.883 10112 10112 F DEBUG : pid: 9887, tid: 10032, name: SDLThread >>> com.companyname.xxxxx <<<
03-24 12:44:31.883 10112 10112 F DEBUG : uid: 10396
03-24 12:44:31.883 10112 10112 F DEBUG : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
03-24 12:44:31.883 10112 10112 F DEBUG : pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
03-24 12:44:31.883 10112 10112 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
03-24 12:44:31.883 10112 10112 F DEBUG : Abort message: 'JNI DETECTED ERROR IN APPLICATION: mid == null
03-24 12:44:31.883 10112 10112 F DEBUG : in call to CallIntMethod
03-24 12:44:31.883 10112 10112 F DEBUG : from int org.libsdl.app.SDLActivity.nativeInit(java.lang.Object, java.lang.String)'
03-24 12:44:31.883 10112 10112 F DEBUG : x0 0000000000000000 x1 0000000000002730 x2 0000000000000006 x3 0000007ba5374f40
03-24 12:44:31.883 10112 10112 F DEBUG : x4 5151441f43445342 x5 5151441f43445342 x6 5151441f43445342 x7 7f7f7f7f7f7f7f7f
03-24 12:44:31.883 10112 10112 F DEBUG : x8 00000000000000f0 x9 0000007cce6f1bf0 x10 0000000000000001 x11 0000007cce7663ec
03-24 12:44:31.883 10112 10112 F DEBUG : x12 0000007b9ab32430 x13 0000000001b51f60 x14 0000000001b51e20 x15 0000121dd9e6a659
03-24 12:44:31.883 10112 10112 F DEBUG : x16 0000007cce7d1a58 x17 0000007cce7aa120 x18 0000000000000008 x19 000000000000269f
03-24 12:44:31.883 10112 10112 F DEBUG : x20 0000000000002730 x21 00000000ffffffff x22 0000007c23615000 x23 0000000000000002
03-24 12:44:31.883 10112 10112 F DEBUG : x24 0000007ba5375118 x25 0000007ba5376000 x26 000000000000004d x27 00000000000000e5
03-24 12:44:31.884 10112 10112 F DEBUG : x28 0000007ba5375598 x29 0000007ba5374fc0
03-24 12:44:31.884 10112 10112 F DEBUG : lr 0000007cce757368 sp 0000007ba5374f20 pc 0000007cce757394 pst 0000000000001000
03-24 12:44:31.884 10112 10112 F DEBUG : backtrace:
03-24 12:44:31.884 10112 10112 F DEBUG : #00 pc 000000000008d394 /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: 55a7515345951d438fd16e74b171760b)
03-24 12:44:31.884 10112 10112 F DEBUG : #01 pc 00000000006d122c /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+704) (BuildId: a49c773ef6221a996ecea990e9753caa)
03-24 12:44:31.884 10112 10112 F DEBUG : #02 pc 0000000000016ea8 /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+80) (BuildId: 420d56eac27a210c92900f3ddb760c86)
03-24 12:44:31.884 10112 10112 F DEBUG : #03 pc 0000000000016450 /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352) (BuildId: 420d56eac27a210c92900f3ddb760c86)
03-24 12:44:31.884 10112 10112 F DEBUG : #04 pc 0000000000442a24 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1612) (BuildId: a49c773ef6221a996ecea990e9753caa)
03-24 12:44:31.884 10112 10112 F DEBUG : #05 pc 00000000005d6118 /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallIntMethod(_JNIEnv*, _jobject*, _jmethodID*, ...)+556) (BuildId: a49c773ef6221a996ecea990e9753caa)
03-24 12:44:31.884 10112 10112 F DEBUG : #06 pc 000000000032cef0 /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (Android_JNI_ShowMessageBox+752) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
03-24 12:44:31.884 10112 10112 F DEBUG : #07 pc 000000000033334c /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (SDL_ShowMessageBox+224) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
03-24 12:44:31.884 10112 10112 F DEBUG : #08 pc 0000000000333430 /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (SDL_ShowSimpleMessageBox+136) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
03-24 12:44:31.884 10112 10112 F DEBUG : #09 pc 000000000087d114 /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (Urho3D::Application::ErrorExit(Urho3D::String const&)+932) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
03-24 12:44:31.884 10112 10112 F DEBUG : #10 pc 000000000087d72c /data/app/~~nd6pGvSYyHFC0jb3r_Wmpg==/com.companyname.xxxxx-0x98f1bE6Ay19-ViLU-YRA==/lib/arm64/libmono-urho.so (Urho3D::Application::Run()+400) (BuildId: 77990cfc08a0f7963a9304ba4d483b87ae85f065)
03-24 12:44:31.884 10112 10112 F DEBUG : #11 pc 00000000000090a8 <anonymous:7cab934000>
欢迎就这一切的任何方面提供任何帮助。