错误膨胀类 android.webkit.WebView 在生产中偶尔发生 [英] Error inflating class android.webkit.WebView happens sporadically in production

查看:25
本文介绍了错误膨胀类 android.webkit.WebView 在生产中偶尔发生的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序在 Google Play 上,它在大多数设备(成千上万的用户)上运行良好.但在极少数情况下(占每日活跃用户的百分比),当我在 onCreateView 方法中为我的片段增加布局时,我会收到 Error inflating class android.webkit.WebView.完整的堆栈跟踪如下:

my application is on Google Play and it runs fine on most of devices (thousands of users). But in rare cases (fraction of percent of daily active users) I get Error inflating class android.webkit.WebView when I inflate layout for my fragment in onCreateView method. Full stack trace is following:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tapmedia.tapito/com.tapmedia.tapito.LockscreenActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class android.webkit.WebView
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2694)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2759)
   at android.app.ActivityThread.access$900(ActivityThread.java:178)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5944)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class android.webkit.WebView
   at android.view.LayoutInflater.createView(LayoutInflater.java:640)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at com.tapmedia.tapito.WebViewFragment.onCreateView(SourceFile:84)
   at android.support.v4.app.Fragment.performCreateView(SourceFile:1789)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:924)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1116)
   at android.support.v4.app.FragmentManagerImpl.onCreateView(SourceFile:2196)
   at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:300)
   at android.support.v7.app.AppCompatDelegateImplV7.callActivityOnCreateView(SourceFile:838)
   at android.support.v7.app.AppCompatDelegateImplV11.callActivityOnCreateView(SourceFile:34)
   at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(SourceFile:826)
   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(SourceFile:44)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
   at android.support.v7.app.AppCompatDelegateImplV7.setContentView(SourceFile:249)
   at android.support.v7.app.AppCompatActivity.setContentView(SourceFile:106)
   at com.tapmedia.tapito.LockscreenActivity.onCreate(SourceFile:103)
   at android.app.Activity.performCreate(Activity.java:6289)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2647)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2759)
   at android.app.ActivityThread.access$900(ActivityThread.java:178)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5944)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.reflect.InvocationTargetException
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
   at android.view.LayoutInflater.createView(LayoutInflater.java:614)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at com.tapmedia.tapito.WebViewFragment.onCreateView(SourceFile:84)
   at android.support.v4.app.Fragment.performCreateView(SourceFile:1789)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:924)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1116)
   at android.support.v4.app.FragmentManagerImpl.onCreateView(SourceFile:2196)
   at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:300)
   at android.support.v7.app.AppCompatDelegateImplV7.callActivityOnCreateView(SourceFile:838)
   at android.support.v7.app.AppCompatDelegateImplV11.callActivityOnCreateView(SourceFile:34)
   at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(SourceFile:826)
   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(SourceFile:44)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
   at android.support.v7.app.AppCompatDelegateImplV7.setContentView(SourceFile:249)
   at android.support.v7.app.AppCompatActivity.setContentView(SourceFile:106)
   at com.tapmedia.tapito.LockscreenActivity.onCreate(SourceFile:103)
   at android.app.Activity.performCreate(Activity.java:6289)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2647)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2759)
   at android.app.ActivityThread.access$900(ActivityThread.java:178)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5944)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
   at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:161)
   at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
   at android.webkit.WebView.getFactory(WebView.java:2193)
   at android.webkit.WebView.ensureProviderCreated(WebView.java:2188)
   at android.webkit.WebView.setOverScrollMode(WebView.java:2247)
   at android.view.View.(View.java:3795)
   at android.view.View.(View.java:3909)
   at android.view.ViewGroup.(ViewGroup.java:507)
   at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
   at android.webkit.WebView.(WebView.java:547)
   at android.webkit.WebView.(WebView.java:492)
   at android.webkit.WebView.(WebView.java:475)
   at android.webkit.WebView.(WebView.java:462)
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
   at android.view.LayoutInflater.createView(LayoutInflater.java:614)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at com.tapmedia.tapito.WebViewFragment.onCreateView(SourceFile:84)
   at android.support.v4.app.Fragment.performCreateView(SourceFile:1789)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:924)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1116)
   at android.support.v4.app.FragmentManagerImpl.onCreateView(SourceFile:2196)
   at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:300)
   at android.support.v7.app.AppCompatDelegateImplV7.callActivityOnCreateView(SourceFile:838)
   at android.support.v7.app.AppCompatDelegateImplV11.callActivityOnCreateView(SourceFile:34)
   at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(SourceFile:826)
   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(SourceFile:44)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
   at android.support.v7.app.AppCompatDelegateImplV7.setContentView(SourceFile:249)
   at android.support.v7.app.AppCompatActivity.setContentView(SourceFile:106)
   at com.tapmedia.tapito.LockscreenActivity.onCreate(SourceFile:103)
   at android.app.Activity.performCreate(Activity.java:6289)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2647)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2759)
   at android.app.ActivityThread.access$900(ActivityThread.java:178)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5944)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
   at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:137)
   at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:133)
   at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
   at android.webkit.WebView.getFactory(WebView.java:2193)
   at android.webkit.WebView.ensureProviderCreated(WebView.java:2188)
   at android.webkit.WebView.setOverScrollMode(WebView.java:2247)
   at android.view.View.(View.java:3795)
   at android.view.View.(View.java:3909)
   at android.view.ViewGroup.(ViewGroup.java:507)
   at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
   at android.webkit.WebView.(WebView.java:547)
   at android.webkit.WebView.(WebView.java:492)
   at android.webkit.WebView.(WebView.java:475)
   at android.webkit.WebView.(WebView.java:462)
   at java.lang.reflect.Constructor.newInstance(Constructor.java)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
   at android.view.LayoutInflater.createView(LayoutInflater.java:614)
   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at com.tapmedia.tapito.WebViewFragment.onCreateView(SourceFile:84)
   at android.support.v4.app.Fragment.performCreateView(SourceFile:1789)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:924)
   at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1116)
   at android.support.v4.app.FragmentManagerImpl.onCreateView(SourceFile:2196)
   at android.support.v4.app.FragmentActivity.onCreateView(SourceFile:300)
   at android.support.v7.app.AppCompatDelegateImplV7.callActivityOnCreateView(SourceFile:838)
   at android.support.v7.app.AppCompatDelegateImplV11.callActivityOnCreateView(SourceFile:34)
   at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(SourceFile:826)
   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(SourceFile:44)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
   at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
   at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
   at android.support.v7.app.AppCompatDelegateImplV7.setContentView(SourceFile:249)
   at android.support.v7.app.AppCompatActivity.setContentView(SourceFile:106)
   at com.tapmedia.tapito.LockscreenActivity.onCreate(SourceFile:103)
   at android.app.Activity.performCreate(Activity.java:6289)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2647)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2759)
   at android.app.ActivityThread.access$900(ActivityThread.java:178)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:5944)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

我不明白出了什么问题.因为这个错误来自在线报告工具(Crashlytics/Fabric),我不知道是每次特定用户尝试使用片段时都会发生这种情况,还是用户通常将片段膨胀并且错误只发生在时间.WebView 小部件是系统的一部分,对吗?我的意思是 - 我不能在我的生产 APK 中遗漏一些东西 - 比如支持库等等.或者我可以吗?

I don't understand what's wrong. Because this error comes from online reporting tool (Crashlytics/Fabric), I can't tell, whether this happens every time the specific user tries to use the fragment or if the user normally gets the fragment inflated and the error happens only from time to time. WebView widget is part of the system, right? I mean - I can't be missing something in my production APK - like support library or so. Or can I?

推荐答案

如果您看到这些来自运行 Android Lollipop 的设备的报告,请忽略它们.每当某些东西启动使用 WebView 的活动而 WebView 包正在由 Play 商店更新时(目前只能在 Lollipop 上发生),这种情况很可能发生.在更新期间,包被视为未由包管理器安装.也就是说,您的应用程序没有任何问题.更新包被认为不存在的时间窗口通常很小,因此当应用程序在此类崩溃后重新启动时,它会正常启动.

If you see these reports from devices running Android Lollipop, please ignore them. This likely happens whenever something launches an activity that uses WebView while the WebView package is in the middle of being updated by Play Store (which can only happen on Lollipop currently). During updates, packages are treated as not installed by the package manager. That is, there is nothing wrong with your app. The time window while the updated package is considered non-existent is typically small, so when the app is relaunched after such a crash, it will start normally.

这篇关于错误膨胀类 android.webkit.WebView 在生产中偶尔发生的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆