webview android 9.0 以上共享文件目录导致的崩溃解决

java.lang.RuntimeException: Using WebView from more than one process at once with the same data directory is not supported. https://crbug.com/558377
    at jO.b(PG:102)
    at jO.b(PG:182)
    at jO.a(PG:163)
    at com.android.webview.chromium.WebViewChromiumFactoryProvider.a(PG:234)
    at com.android.webview.chromium.WebViewChromium.init(PG:44)
    at android.webkit.WebView.<init>(WebView.java:683)
    at android.webkit.WebView.<init>(WebView.java:609)
    at android.webkit.WebView.<init>(WebView.java:592)

bug 参考:https://bugs.chromium.org/p/chromium/issues/detail?id=558377

解决思路主要是为每个进程设置自己的目录。
但亿级app上,依然会存在崩溃的场景。
主要是无法准确判断是否处于主进程,只能逐级堵住漏洞

 if (Build.VERSION.SDK_INT >= 28 && !ApplicationContext.mIsHostPorcess) {
            try {
                String processName = BaseContext.getCurrentProcessName(activity.getApplication());
                if (StringUtils.isEmpty(processName)) {
                    DebugLog.ppLogBuffer.log(TAG, "D", "initDataDirectorySuffix getCurrentProcessName is null!");
                    return;
                }
                WebView.setDataDirectorySuffix(processName);
                DebugLog.log(TAG, "QYWebviewCorePanel setDataDirectorySuffix" + processName);
            } catch (Exception e) {
                DebugLog.ppLogBuffer.log(TAG, "D", "initDataDirectorySuffix execption caught:"+ e.toString());
            }
        }

核心问题在于ApplicationContext.mIsHostPorcess 是否能够判断准确

更新解决思路

Android 11 以后官方已经修复。
重点解决的 Android 9,10 两个版本的崩溃问题,解决思路是new webveiw 时,将 SDK 版本手动改成8,new webview 后,再将其改回。 这样可以绕过这个崩溃问题。

具体思路 通过ASM插桩(最近gradle已集成):
new webview() 前:
context.getApplicationInfo().targetSdkVersion = Build.VERSION_CODES.O;

new webview() 后:
context.getApplicationInfo().targetSdkVersion = 原 VERSION_CODES;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,775评论 0 10
  • 二、组件 1、Activity----------1 MS思考:Android面试一天一题(3 Day):Acti...
    嘉了个桀阅读 968评论 0 51
  • 遗失在青春的日记 岐麟散人/陕西 那枚夹在信纸中的桃花 随主人公的鬓白 经络 渐渐失去血色
    岐麟散人阅读 502评论 0 0
  • 在我个人看来,计划是有关一个“待做事件构造”的陈述,描述了待做事情的内容,时间以及执行人员,重要性等级,计...
    皆非的万事屋阅读 220评论 0 1
  • 下起雨了 撑起伞 路过乌云的昏暗 也路过雨丝的慌乱 下起雨了 撑起伞 用尽勇气独自前行 是我的倔强也是爱护的心 下...
    墨黎雪阅读 203评论 1 1