Why is one user getting NoSuchMethodError where tens of thousands don't?

Giszmo :

How can one of our many users get

java.lang.NoSuchMethodError: 
   at com.mycelium.wallet.activity.settings.SettingsPreference.getLanguage (SettingsPreference.kt:73)
   at com.mycelium.wallet.WalletApplication.onCreate (WalletApplication.java:109)
   at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1127)

on this line of Kotlin code:

@JvmStatic
fun getLanguage(): String? = sharedPreferences.getString(Constants.LANGUAGE_SETTING, Locale.getDefault().language)

There are three function calls on this line: android.content.SharedPreferences::getString(String,String), java.util.Locale::getDefault() and java.util.Locale::getLanguage() all of which are available since API 1.

The only affected user (Samsung Galaxy A5(2017) (a5y17lte), 2816MB RAM, Android 8.0) tried to start the app 180 times with this insta-crash.

The conversion to Kotlin might have issues still?

Martin Zeitler :

try { ... } catch (NoSuchMethodError e) { ... } might be a suitable workaround. But they already might have given up; if you don't have any email address or alike, you won't be able to notify them. You'd could return a static string in case of a NoSuchMethodError. Besides, if one has written down the seed phrase, the wallet is on the block-chain, the device only has the keys. I'd file that as an individual destiny - and that device probably could still be rooted, to have the keys extracted. It's difficult to help them without having a support request, so that one could notify them of a new version, which not relies on whatever unknown method. Maybe they still use it and would receive an auto-update and try again, but only maybe - but there's no guarantee, that this is the only one unknown method on this device.

It's definitely not a Kotlin issue, but rather a storage defect; google "eMMC corruption".

And if the user has not written down their seed phrase, it's their very own fault.

This all is an assumption, but the probability isn't that low.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=386074&siteId=1