Android rom开发:webview崩溃问题Binary XML file line #103: Error inflating class android.webkit.WebView

近期在项目上遇到了webview崩溃的问题,出现在app版本迭代之后。崩溃log如下:

05-26 13:58:52.961 7085-7085/com.printer.tool E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.printer.tool, PID: 7085
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.printer.tool/com.example.testapplication.MainActivity}: android.view.InflateException: Binary XML file line #103: Error inflating class android.webkit.WebView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
     Caused by: android.view.InflateException: Binary XML file line #103: Error inflating class android.webkit.WebView
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.example.testapplication.MainActivity.onCreate(MainActivity.java:116)
        at android.app.Activity.performCreate(Activity.java:6033)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)?
        at android.app.ActivityThread.access$800(ActivityThread.java:151)?
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)?
        at android.os.Handler.dispatchMessage(Handler.java:102)?
        at android.os.Looper.loop(Looper.java:135)?
        at android.app.ActivityThread.main(ActivityThread.java:5254)?
        at java.lang.reflect.Method.invoke(Native Method)?
        at java.lang.reflect.Method.invoke(Method.java:372)?
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)?
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)?
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:607)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)?
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)?
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)?
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)?
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)?
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)?
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)?
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)?
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)?
        at com.example.testapplication.MainActivity.onCreate(MainActivity.java:116)?
        at android.app.Activity.performCreate(Activity.java:6033)?
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)?
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)?
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)?
        at android.app.ActivityThread.access$800(ActivityThread.java:151)?
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)?
        at android.os.Handler.dispatchMessage(Handler.java:102)?
        at android.os.Looper.loop(Looper.java:135)?
        at android.app.ActivityThread.main(ActivityThread.java:5254)?
        at java.lang.reflect.Method.invoke(Native Method)?
        at java.lang.reflect.Method.invoke(Method.java:372)?
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)?
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)?
     Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
        at android.content.res.Resources.getText(Resources.java:299)
        at android.content.res.Resources.getString(Resources.java:385)
        at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
        at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
        at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
        at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)
        at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:312)
        at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:96)
        at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:264)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:123)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:110)
        at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:107)
        at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:261)
        at android.webkit.WebView.<init>(WebView.java:554)
    	at android.webkit.WebView.<init

从log看是有webview资源未找到。

分析与验证:

1.app调用webview的代码没有变化,说明调用逻辑本身没有问
题,但是webview所在的Activity由继承自Activity变成了继承自AppCompatActivity
2.可能是webview app太老旧,尝试安装新版本,实测问题解决


PS:
有一些文章提供的方法是自定义webview,根据版本返回不同的context,但是这个方法仅限于app层面,从系统层面而言,还是需要修改webview app。

google android源码自带的webview app分别如下:

点这里->7.1

点这里->8.0

点这里->9.0

点这里->10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值