【Xamarin】MainPageを連続で設定するとIllegalArgumentException?

おはようございます。こんにちは。こんばんは。
東京Nです。

【Xamarin】NavigationPageでメモリリーク?
で、もうANRは解決をしたと思い、Google Play Consoleで確認をしてみました。
ANRは発生しておらず、ヤッターと喜んでいたところ、
クラッシュが1件。。。

まー たまたまかなと思い2日ほど様子を見ていましたが、4件に増えていました。

クラスタを見てみると4件とも同じ例外が発生していました。
java.lang.IllegalArgumentException
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1413)
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.BackStackRecord.executeOps (BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl$1.run (FragmentManager.java:700)
at android.os.Handler.handleCallback (Handler.java:751)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6776)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386)

発生したAndroid端末は
Sony Xperia Z5(SO-01H), Android 6.0
Sony Xperia X Performance(SOV33), Android 8.0
Samsung Galaxy Feel(SC-04J), Android 7.0
Sony Xperia XZ Premium(SO-04J), Android 8.0

こいつはたまたまじゃない。と調べてみました。
スタックトレースが全く自分のコードとは関係がないので、どうやって調べればいいのかと。
とりあえずググりまくりました。

するとこんな記事が
Setting Main Page in quick succession causes crash on Android #1355

When setting the main page of an application twice in quick succession, the app crashes with an IllegalArgumentException on Android.
アプリケーションのメインページを2回連続して設定すると、Android上でIllegalArgumentExceptionが発生してアプリケーションがクラッシュします。

1. Set the main page of an application to a NavigationPage
1. アプリケーションのメインページをNavigationPageに設定する
2. A short time after, set the main page again
2. しばらくするとメインページを再び設定する

The application crashes.
アプリケーションがクラッシュします。

これやってるな。
解決策は?

This is fixed in version 2.5.1 and up.
これはバージョン2.5.1以降で修正されています。

いや、まさか。。。と思い、パッケージを確認したところ
Xamarin.Forms 2.5.0.91635

すぐにアップデートしました。
2.5.0.91635 → 3.1.0.697729

ついでにXamarin.Formsの依存関係である
Xamarin.Android.Support.v7.CardView (>= 25.4.0.2)
Xamarin.Android.Support.v7.MediaRouter (>= 25.4.0.2)
Xamarin.Android.Support.v7.AppCompat (>= 25.4.0.2)
Xamarin.Android.Support.Design (>= 25.4.0.2)
Xamarin.Android.Support.v4 (>= 25.4.0.2)
もアップデートしようとしたところ、
MonoAndroidが8.1を要求していたので、ついでにターゲットSDKも27(8.1 Oreo)へ。

そしてリリース。
これで様子見。

お問い合わせ