S9/S9+ 特定的 WebView 设备崩溃报告

S9/S9+ specific WebView device crash report

我们一直在 Google Play 中看到特定于三星 S9 (starqlesq) 和 S9+ (star2qlesq) 的崩溃报告,两者都是 运行 Android 8.0.0:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) backtrace: #00 pc 0000000000a51278 /vendor/lib64/libllvm-glnext.so (_ZN13ShaderObjects17loadProgramBinaryEP15CompilerContextPvmP23QGLC_LINKPROGRAM_RESULT+1396) #01 pc 000000000099b500 /vendor/lib64/libllvm-glnext.so (_ZN15CompilerContext17loadProgramBinaryEPvmP23QGLC_LINKPROGRAM_RESULT+160) #02 pc 0000000000a6e110 /vendor/lib64/libllvm-glnext.so (_Z21QGLCLoadProgramBinaryPvS_mP23QGLC_LINKPROGRAM_RESULT+88) #03 pc 00000000001a501c /vendor/lib64/egl/libGLESv2_adreno.so (_ZN17EsxShaderCompiler21LoadProgramBinaryBlobEP10EsxContextP10EsxProgramPKvmP10EsxInfoLog+256)

查看上面的堆栈跟踪,崩溃似乎发生在 OpenGL 系统代码中。

这很奇怪,因为我们集成了崩溃报告解决方案(Microsoft App Center SDK),其他崩溃报告将发送到 App Center。

我们的应用程序大量使用了 WebView,据我所知,它现在在单独的进程中使用 Chrome、运行。

因此我的问题是:

现已确认禁用硬件加速可以解决这些有问题的设备上的问题:

val product = Build.PRODUCT
val s9ProductsThatNeedWorkaround = arrayOf("starqltesq", "star2qltesq", "starqlteue", "star2qlteue")
if (s9ProductsThatNeedWorkaround.contains(product)) {
    WebView.setLayerType(LAYER_TYPE_SOFTWARE)
}

然而,在渲染 Web 内容时可能会出现一些外观异常。