7

Android 10我的应用程序在具有以下调用堆栈的设备上崩溃:

backtrace:
#00  pc 000000000006f06c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#01  pc 00000000000500fc  /system/lib64/libc++.so (abort_message+232)
#02  pc 0000000000050218  /system/lib64/libc++.so (demangling_terminate_handler()+44)
#03  pc 00000000000646c4  /system/lib64/libc++.so (std::__terminate(void (*)())+12)
#04  pc 000000000006466c  /system/lib64/libc++.so (std::terminate()+52)
#05  pc 00000000000bb150  /system/lib64/libc++.so (std::__1::thread::~thread()+20)
#06  pc 00000000000d0f48  /apex/com.android.runtime/lib64/bionic/libc.so (__cxa_finalize+212)
#07  pc 00000000000cc930  /apex/com.android.runtime/lib64/bionic/libc.so (exit+24)
#08  pc 0000000000032f30  /data/app/com.domain.myapp-Rs_sm5VrLR1Jj8QW6oYByA==/lib/arm64/libplugins_platforms_qtforandroid_arm64-v8a.so

我不知道发生这种情况的时间和原因,因为我无法在我的设备和模拟器上重现这种情况,但这在用户端集中发生并且仅发生在Android 10(而不是在以前的 Android 版本上)。

我的QT版本是 5.14.2。

4

1 回答 1

1

我们刚刚为我们的一款游戏发布了更新,看起来崩溃已修复。这就是我们所做的:Android 10 和 Android 9 在使用 Android 后退按钮时会显示不同的默认行为。在 Android 10 上,应用程序关闭,但在控制台输出中,我看到应用程序在真正退出之前卡在循环中大约 5 秒钟。这在 Android 9 上不会发生。这是我在 Android 10 设备上点击后退按钮并关闭应用程序时得到的输出:

....
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent before read
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent after read, length = -1
05-04 18:26:21.315 26882 26908 I nkeycat.tendow:
I nkeycat.tendow: QarthPatchMonintor::CheckNotifyEvent
05-04 18:26:21.315 26882 26908 I
...

我现在在 QML 中随处可见 Android 后退按钮,当用户真的想退出应用程序时,我调用以下自定义 Java 函数来优雅地退出:

public String quitApp() { // Qt C++ call

    try {
        finishAffinity();
        System.exit(0);

    } catch (Exception exc) {
        exc.printStackTrace();
        logException(exc);
    }
    return "";
}

我们还实施了 David K. Hess 的建议。

于 2020-05-06T08:59:25.177 回答