Android(安卓)rom开发:webview崩溃问题Binary XML file line #103: Error inflating class android.webkit.WebView
16lz
2021-01-25
近期在项目上遇到了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.
从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
更多相关文章
- Android(安卓)网络框架初探
- 浅入浅出Android(014):HTTP GET获取文本内容
- 学习Android闹钟源代码(三)-AlarmClock类分析(part2)
- Android(安卓)动画AlphaAnimation类方法
- android tabHost使用
- Android(安卓)2.3新增API - DownloadManager
- Android(安卓)stutdio2.2 启动模拟器出现“/dev/kvm is not foun
- 【OkHttp3源代码分析】(一)Request的execute
- Android(安卓)Launcher 详解