在开发人员控制台中,我越来越多地中止 native 崩溃。这仅适用于android 8.1设备!
有人知道回归吗?这是回溯:
#00 pc 000000000001da4c /system/lib64/libc.so (abort+112)
#01 pc 0000000000007f7c /system/lib64/liblog.so (__android_log_assert+312)
#02 pc 000000000006cff8 /system/lib64/libhwui.so (android::uirenderer::renderthread::EglManager::createSurface(ANativeWindow*, bool)+324)
#03 pc 000000000006ad14 /system/lib64/libhwui.so (android::uirenderer::renderthread::OpenGLPipeline::setSurface(android::Surface*, android::uirenderer::renderthread::SwapBehavior, android::uirenderer::renderthread::ColorMode)+72)
#04 pc 00000000000679ec /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::setSurface(android::Surface*)+144)
#05 pc 00000000000703bc /system/lib64/libhwui.so (android::uirenderer::renderthread::Bridge_initialize(android::uirenderer::renderthread::initializeArgs*)+16)
#06 pc 00000000000726c4 /system/lib64/libhwui.so (android::uirenderer::renderthread::MethodInvokeRenderTask::run()+24)
#07 pc 00000000000738d8 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+336)
#08 pc 0000000000011504 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+264)
#09 pc 00000000000a9830 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#10 pc 0000000000069c94 /system/lib64/libc.so (__pthread_start(void*)+36)
#11 pc 000000000001eeec /system/lib64/libc.so (__start_thread+68)
更新:
我想这个问题只能由Google自己解决:(此处跟踪了问题https://issuetracker.google.com/issues/70259031
同时,有人可能已经重现了该问题,或者至少可以解释该问题何时发生?这将有助于找到解决方法!
最佳答案
看看这个答案:
tgkill - native error on Android 8.0 Samsung S8
似乎可能与Samsung S8和Samsung S8 +有关。
基本上,如果对话框或对话框片段中有编辑文本,请突出显示该文本,然后关闭对话框(或更改方向),将发生此崩溃。
要解决此问题,我必须在有问题的 Activity 上关闭hardwareAcceleration-这可以在 list 中完成,并且会使 Activity 滞后一些。
<activity android:name=".activities.CarDamageActivity"
android:hardwareAccelerated="false" />
为了防止其他设备出现延迟,可以检查设备型号,如果不是S8或S8 +,请打开硬件加速。
String phoneMake = Build.MANUFACTURER;
String phoneModel = Build.MODEL.toUpperCase();
if (!(phoneMake.equalsIgnoreCase("samsung") && (phoneModel.startsWith("SM-G950")
|| phoneModel.startsWith("SM-G955")))) {
window.setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}