My released app runs fine on multiple thousand devices. There is only one case where an THL device running Android 4.4 throws following stack:
java.lang.RuntimeException: Unable to start activity ComponentInfo{###/###.activity.AGBActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class android.webkit.WebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class android.webkit.WebView
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at ###.fragment.AGBActivityFragment.onCreateView(AGBActivityFragment.java:21)
at android.app.Fragment.performCreateView(Fragment.java:1700)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142)
at android.app.Activity.onCreateView(Activity.java:4819)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:305)
at android.app.Activity.setContentView(Activity.java:1944)
at ###.activity.AGBActivity.onCreate(AGBActivity.java:78)
at android.app.Activity.performCreate(Activity.java:5264)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
... 33 more
Caused by: java.lang.NoClassDefFoundError: android/webkit/WebViewFactory$Preloader
at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:92)
at android.webkit.WebView.getFactory(WebView.java:2081)
at android.webkit.WebView.ensureProviderCreated(WebView.java:2076)
at android.webkit.WebView.setOverScrollMode(WebView.java:2161)
at android.view.View.<init>(View.java:3474)
at android.view.View.<init>(View.java:3530)
at android.view.ViewGroup.<init>(ViewGroup.java:494)
at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:52)
at android.webkit.WebView.<init>(WebView.java:525)
at android.webkit.WebView.<init>(WebView.java:502)
at android.webkit.WebView.<init>(WebView.java:482)
at android.webkit.WebView.<init>(WebView.java:471)
... 36 more
The referred line 21 in AGBActivityFragment is:
return inflater.inflate(R.layout.fragment_agb, container, false);
The unexciting layout of the fragment is:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:padding="@dimen/activity_margin"
android:background="#ffffff"
tools:context="###.fragment.AGBActivityFragment">
<WebView
android:id="@+id/webView_content"
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/layout_bottom"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/layout_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:weightSum="2">
<Button
android:id="@+id/btn_decline"
android:layout_width="0dp"
android:layout_height="wrap_content"
style="@style/button"
android:layout_weight="1"
android:visibility="invisible"
android:text="@string/decline"/>
<Button
android:id="@+id/btn_accept"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/button"
android:visibility="invisible"
android:text="@string/accept"/>
</LinearLayout>
I guess it is a system bug as stated here. Except that this does not happen on Lollipop and it is not exactly the same error.
Is there any work around or could someone explain the cause?