最近,我们开始在我们的crashlytics中看到这个新条目,该条目表示
android无法在设备上找到webview包.
这是完整的堆栈跟踪(源代码中的类已被替换为…..:
- Fatal Exception: android.view.InflateException: Binary XML file line #139: Binary XML file line #139: Error inflating class <unknown>
- Caused by android.view.InflateException: Binary XML file line #139: Error inflating class <unknown>
- Caused by java.lang.reflect.InvocationTargetException
- at java.lang.reflect.Constructor.newInstance0(Constructor.java)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
- at android.view.LayoutInflater.createView(LayoutInflater.java:645)
- at g.a.a.a.d.a(SourceFile:211)
- at g.a.a.a.d.a(SourceFile:20)
- at g.a.a.a.d$a.onCreateView(SourceFile:302)
- at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
- at g.a.a.a.d.inflate(SourceFile:60)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
- at ......(SourceFile:148)
- at ......(SourceFile:119)
- at ......(SourceFile:28)
- at android.support.v4.view.ViewPager.a(SourceFile:1034)
- at android.support.v4.view.ViewPager.a(SourceFile:1182)
- at android.support.v4.view.ViewPager.c(SourceFile:1116)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642)
- at ....(SourceFile:27)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.widget.ScrollView.onMeasure(ScrollView.java:345)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658)
- at android.view.View.measure(View.java:20234)
- at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825)
- at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659)
- at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600)
- at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873)
- at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485)
- at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078)
- at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910)
- at android.view.Choreographer.doCallbacks(Choreographer.java:712)
- at android.view.Choreographer.doFrame(Choreographer.java:646)
- at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896)
- at android.os.Handler.handleCallback(Handler.java:836)
- at android.os.Handler.dispatchMessage(Handler.java:103)
- at android.os.Looper.loop(Looper.java:203)
- at android.app.ActivityThread.main(ActivityThread.java:6369)
- at java.lang.reflect.Method.invoke(Method.java)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949)
- Caused by android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
- at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:395)
- at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
- at android.webkit.WebView.getFactory(WebView.java:2592)
- at android.webkit.WebView.findAddress(WebView.java:1958)
- at android.text.util.Linkify.gatherMapLinks(Linkify.java:599)
- at android.text.util.Linkify.addLinks(Linkify.java:287)
- at android.widget.TextView.setText(TextView.java:4474)
- at android.widget.TextView.setText(TextView.java:4395)
- at android.widget.TextView.<init>(TextView.java:1472)
- at android.widget.TextView.<init>(TextView.java:727)
- at android.widget.TextView.<init>(TextView.java:723)
- at me.grantland.widget.AutofitTextView.<init>(SourceFile:25)
- at java.lang.reflect.Constructor.newInstance0(Constructor.java)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
- at android.view.LayoutInflater.createView(LayoutInflater.java:645)
- at g.a.a.a.d.a(SourceFile:211)
- at g.a.a.a.d.a(SourceFile:20)
- at g.a.a.a.d$a.onCreateView(SourceFile:302)
- at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
- at g.a.a.a.d.inflate(SourceFile:60)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
- at ....(SourceFile:148)
- at ....(SourceFile:119)
- at ....(SourceFile:28)
- at android.support.v4.view.ViewPager.a(SourceFile:1034)
- at android.support.v4.view.ViewPager.a(SourceFile:1182)
- at android.support.v4.view.ViewPager.c(SourceFile:1116)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642)
- at ....(SourceFile:27)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.widget.ScrollView.onMeasure(ScrollView.java:345)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658)
- at android.view.View.measure(View.java:20234)
- at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825)
- at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659)
- at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600)
- at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873)
- at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485)
- at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078)
- at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910)
- at android.view.Choreographer.doCallbacks(Choreographer.java:712)
- at android.view.Choreographer.doFrame(Choreographer.java:646)
- at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896)
- at android.os.Handler.handleCallback(Handler.java:836)
- at android.os.Handler.dispatchMessage(Handler.java:103)
- at android.os.Looper.loop(Looper.java:203)
- at android.app.ActivityThread.main(ActivityThread.java:6369)
- at java.lang.reflect.Method.invoke(Method.java)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949)
- Caused by android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
- at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:294)
- at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:354)
- at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
- at android.webkit.WebView.getFactory(WebView.java:2592)
- at android.webkit.WebView.findAddress(WebView.java:1958)
- at android.text.util.Linkify.gatherMapLinks(Linkify.java:599)
- at android.text.util.Linkify.addLinks(Linkify.java:287)
- at android.widget.TextView.setText(TextView.java:4474)
- at android.widget.TextView.setText(TextView.java:4395)
- at android.widget.TextView.<init>(TextView.java:1472)
- at android.widget.TextView.<init>(TextView.java:727)
- at android.widget.TextView.<init>(TextView.java:723)
- at me.grantland.widget.AutofitTextView.<init>(SourceFile:25)
- at java.lang.reflect.Constructor.newInstance0(Constructor.java)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
- at android.view.LayoutInflater.createView(LayoutInflater.java:645)
- at g.a.a.a.d.a(SourceFile:211)
- at g.a.a.a.d.a(SourceFile:20)
- at g.a.a.a.d$a.onCreateView(SourceFile:302)
- at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:777)
- at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
- at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
- at g.a.a.a.d.inflate(SourceFile:60)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
- at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
- at ....(SourceFile:148)
- at ....(SourceFile:119)
- at ....(SourceFile:28)
- at android.support.v4.view.ViewPager.a(SourceFile:1034)
- at android.support.v4.view.ViewPager.a(SourceFile:1182)
- at android.support.v4.view.ViewPager.c(SourceFile:1116)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1642)
- at ....(SourceFile:27)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1320)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.widget.ScrollView.onMeasure(ScrollView.java:345)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.view.ViewPager.onMeasure(SourceFile:1658)
- at android.view.View.measure(View.java:20234)
- at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825)
- at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511)
- at android.view.View.measure(View.java:20234)
- at android.support.v4.widget.DrawerLayout.onMeasure(SourceFile:1081)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.support.v7.widget.ContentFrameLayout.onMeasure(SourceFile:139)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
- at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
- at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6249)
- at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
- at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716)
- at android.view.View.measure(View.java:20234)
- at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2659)
- at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1600)
- at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1873)
- at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1485)
- at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7078)
- at android.view.Choreographer$CallbackRecord.run(Choreographer.java:910)
- at android.view.Choreographer.doCallbacks(Choreographer.java:712)
- at android.view.Choreographer.doFrame(Choreographer.java:646)
- at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:896)
- at android.os.Handler.handleCallback(Handler.java:836)
- at android.os.Handler.dispatchMessage(Handler.java:103)
- at android.os.Looper.loop(Looper.java:203)
- at android.app.ActivityThread.main(ActivityThread.java:6369)
- at java.lang.reflect.Method.invoke(Method.java)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1088)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:949)
我们看到这个:
Android版本:5,6,7
设备制造商:联想,oneplus,三星,摩托罗拉
并且,设备没有根植.
搜索一段时间后,我无法找到任何适当的原因(和处理).经过this问题,但它没有任何解决方案.
请帮忙.
解决方法
我在这里想出了一个可能的问题.我们知道webview已经作为一个单独的应用程序从android 5.0发布,可能是因为当我的视图被夸大时,webview包正在由os更新,因此无法找到webview pacakge那几分钟.我知道这是一个非常边缘的案例但是
>正如我所看到的,崩溃只发生在支持这一假设的> = 5.0设备上
>很难相信所有这些设备都没有安装webview.事实上,我尝试从我的设备卸载系统和chrome软件包,但应用程序仍然没有崩溃.
所以这就是我所做的(hacky解决方案,但防止崩溃):
- try {
- // the inflating code that's causing the crash
- } catch (Exception e) {
- if (e.getMessage() != null && e.getMessage().contains("webview")) {
- // If the system Failed to inflate this view because of the WebView (which could
- // be one of several types of exceptions),it likely means that the system WebView
- // is either not present (unlikely) OR in the process of being updated (also unlikely).
- // It's unlikely but we have been receiving a lot of crashes.
- // In this case,show the user a message and finish the activity
- }
- }
基本上只是处理该异常.那里没有火箭科学.