IllegalArgumentException: Unsupported ABI: null in VMRuntime.getInstructionSet() on Android 5.0

Issue

Seeing this crash on Google Play Console of our unity-made game after our recent update, happening on Android 5.0 for more than 99% of the occasions. I guess this has something to do with WebView, and saw this relavant post: https://bugs.chromium.org/p/chromium/issues/detail?id559720 However this does not seem like our case since we’re only seeing this crash after our recent update, and the occurances are almost all on Android 5.0. We’re still using Facebook SDK 4.9.0, wonder if that’s too old. Stacktrace as follows:

java.lang.Error: FATAL EXCEPTION [main]
Unity version     : 5.6.3f1
Device model      : positivo S455
Device fingerprint: Positivo/S455/S455:5.0.2/LRX22G/URBR2017051601:user/release-keys
Caused by
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3136)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3167)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2522)
  at android.app.ActivityThread.access$800 (ActivityThread.java:162)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1412)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:189)
  at android.app.ActivityThread.main (ActivityThread.java:5529)
  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:951)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:746)
Caused by: java.lang.IllegalArgumentException: 
  at dalvik.system.VMRuntime.getInstructionSet (VMRuntime.java:324)
  at dalvik.system.VMRuntime.is64BitAbi (VMRuntime.java:337)
  at android.webkit.WebViewFactory.getWebViewNativeLibraryPaths (WebViewFactory.java:273)
  at android.webkit.WebViewFactory.loadNativeLibrary (WebViewFactory.java:384)
  at android.webkit.WebViewFactory.getProvider (WebViewFactory.java:95)
  at android.webkit.CookieManager.getInstance (CookieManager.java:46)
  at android.webkit.CookieSyncManager.sync (CookieSyncManager.java:108)
  at com.facebook.internal.Utility.clearCookiesForDomain (Utility.java:694)
  at com.facebook.internal.Utility.clearFacebookCookies (Utility.java:719)
  at com.facebook.login.WebViewLoginMethodHandler.tryAuthorize (WebViewLoginMethodHandler.java:104)
  at com.facebook.login.LoginClient.tryCurrentHandler (LoginClient.java:249)
  at com.facebook.login.LoginClient.tryNextHandler (LoginClient.java:211)
  at com.facebook.login.LoginClient.authorize (LoginClient.java:127)
  at com.facebook.login.LoginClient.startOrContinueAuth (LoginClient.java:108)
  at com.facebook.login.LoginFragment.onResume (LoginFragment.java:152)
  at android.support.v4.app.Fragment.performResume (Fragment.java:2401)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1465)
  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1740)
  at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1809)
  at android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3217)
  at android.support.v4.app.FragmentManagerImpl.dispatchResume (FragmentManager.java:3181)
  at android.support.v4.app.FragmentController.dispatchResume (FragmentController.java:214)
  at android.support.v4.app.FragmentActivity.onResumeFragments (FragmentActivity.java:470)
  at android.support.v4.app.FragmentActivity.onPostResume (FragmentActivity.java:459)
  at android.app.Activity.performResume (Activity.java:6065)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3121)

Solution

This issue is related to a mismatch between 32/64-bit devices. There’s a bug open in chromium.org here: https://bugs.chromium.org/p/chromium/issues/detail?id559720#c2

“Unsupported ABI: null” can mean a 32/64-bit mismatch. We’ve been seeing an issue when vendors issue OTAs which upgrade 64-bit devices from 32- to 64-bit Android. There’s a bug in PlayStore where such devices will continue to get the 32-bit WebView. That may be what’s happening here. We have an internal bug open for this but I can’t say when it’ll get fixed. 🙁 Users can get to the right version by uninstalling WebView updates in Settings and then re-updating WebView in the Play Store.

Quoting another comment from the above source:

This issue should sort itself out after the next time the user runs the play store app for any reason (the issue only occurs during automatic updates and running the play store fixes the incorrect state that makes it install the wrong package).

Answered By – Prem Suman

Leave a Comment