我在与NDK相关的Crashlytics控制面板中的应用程序中看到了一些崩溃(99.5%+无崩溃会话)。那些崩溃(主要是SIGSEGV SEGV_MAPERR,但有时也是SIGBUS BUS_ADRALN)出现在随机位置。对于他们所有人来说,Crashlytics报告了免费RAM的低状态(2-4%,仅在一次崩溃报告中我看到15%的可用RAM)。我使用libc ++(静态链接,因为我的应用程序中只有一个动态库)+最新的NDK(v16)。代码是用C ++ 14编写的,并使用以下标志-fPIC -fno-strict-aliasing -fstack-protector进行编译。在iOS应用程序中使用的相同代码工作得很好,所以对我来说,看起来Android不会在后台快速杀死应用程序以释放内存,所以在这种情况下我的应用程序有OOM问题,但有趣的是为什么这些问题不要t也发生在Java端(也许VM保留了更多的额外空闲RAM)。你看到过类似的问题吗?也许你知道如何处理它们?
顺便说一句。有时由Crashlytics报告提供的堆栈非常糟糕(仅适用于本机代码中的崩溃,Java很好),我甚至有2次崩溃称为'??? - 未知'。我通过Crashlytics任务上传了符号gradle。你知道如何解决这个问题吗?
干杯,