Xamarin android 13.0 仅对某些用户在启动屏幕上崩溃(JavaProxyThrowable)

问题描述 投票:0回答:2

我有一个严重的错误,我似乎无法正确修复或调试。对于我们所有客户来说,该应用程序在 Android 12 或更高版本的启动屏幕上不断崩溃,而它对我个人来说适用,低于 Android 12(使用模拟器和我自己的手机)和高于 12(使用模拟器)。遗憾的是,Google Play 商店仅允许使用 SDK 版本 12 或更高版本的应用程序包,这会导致此崩溃。

用户很快就能看到启动画面,然后立即崩溃。它在MainActivity的onCreate方法上,但我尝试了很多方法,似乎找不到它。

如果有人知道在本地重现此问题的方法,了解有关此崩溃的任何信息,或者可以为我指出正确的方向,那么那就太棒了!

我已经按照有关如何制作新的 Android 13 启动画面的教程进行操作,但应用程序仍然以同样的方式崩溃。

Google Play 管理中心崩溃报告:

Exception android.runtime.JavaProxyThrowable:
  at crc647e6e9d558d510f83.MainActivity.n_onCreate (MainActivity.java)
  at crc647e6e9d558d510f83.MainActivity.onCreate (MainActivity.java:40)
  at android.app.Activity.performCreate (Activity.java:8591)
  at android.app.Activity.performCreate (Activity.java:8570)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1384)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4150)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4325)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:101)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2574)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8757)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)

(据我所知,这是一个常见错误,因为应用程序在发送正确错误之前崩溃,并且我不知道如何更改代码以显示正确错误)

此外,当添加或删除代码时,它仍然会在第 40 行抛出错误。所以我看不到哪个部分抛出错误。

这就是 MainActivity 当前的样子:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {

            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
        }

        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

这是我制作的一个新测试项目,仍然使应用程序崩溃。这是由 Visual Studio 中的 Xamarin 框架生成的代码。

我尝试过的事情:

  • 让用户多次重新安装应用程序
  • 让用户删除应用程序并重新安装
  • 让用户更新应用程序
  • 让用户删除应用程序的本地缓存
  • 制作了 android 13 启动画面
  • 更新了所有使用的工具,除了仍然使用NetStandard2.0
    • 尝试更新到较新的 NetStandard6.5 时出现很多错误
  • 寻找 JavaProxyThrowable 错误
    • 还尝试了 TryCatch,但随后它挂在启动屏幕上而不执行任何操作

这是我正在使用的软件:

  • 更新了 Visual Studio 2022
  • Nexus 5X API 33(Android 13.0 - API 33)模拟器
    • 在此模拟器上完美运行(不知道如何处理这些崩溃)
  • Nexus 5X Pie 9.0 - API 28(Android 9.0 - API 28)模拟器(也可以)
  • 我自己的三星 Android 手机,安卓版本较低(也可以)
  • Xamarin Essentials 版本 1.7.5(最新)
  • Xamarin 表单版本 5.0.0.2578
  • Xamarin CommunityToolKit 版本 2.0.6
xamarin xamarin.forms crash android-splashscreen
2个回答
0
投票

更新:显然,当用户已经拥有上一个应用程序的 cookie 时,代码中会加载某些内容。因为我们采用了旧版本并使用 Android 13 构建了该版本,并且该版本可以正常工作。非常令人失望的是,这些错误没有在 Playstore 开发人员环境中清楚地显示。这让我很困惑,这可能是与闪屏相关的错误。我将看一下 crashlytics,以获得更好的错误日志。谢谢你的建议。


0
投票

你找到那是什么了吗?我们有同样的错误,并且在主要活动 oncreate 期间发生了崩溃。最初,应用程序在启动屏幕上崩溃,但通过 oncreate 中的 try catch,启动屏幕不断显示,而没有进入主页。

您提出了有关可能导致该问题的 cookie 的建议?

© www.soinside.com 2019 - 2024. All rights reserved.