.NET MAUIのアプリが起動できない問題

Xamarinアプリを.NET MAUIに移行中、そもそも起動できなくなったり、途中でクラッシュすることがあったので、メモしておく。

イベントのBeginInvoke(context, intent, null, null)

コンパイルエラーにはならないんだけど、実行すると吹っ飛ぶ。
こちらを参照。
https://learn.microsoft.com/ja-jp/dotnet/core/porting/net-framework-tech-unavailable
https://devblogs.microsoft.com/dotnet/migrating-delegate-begininvoke-calls-for-net-core/

Task.Run(() => { イベント名?.Invoke(context, intent); });に置き換えるだけ。

アプリのストレージを削除すると起動できなくなる

これはDebug版だけで起こる。
「Fast Deployment の使用」を無効にするか、一度アンインストールして配置し直すこと。
https://stackoverflow.com/questions/42336546/xamarin-android-application-crashed-after-clear-data-in-settings

AndroidはPersonalに保存できないっぽい?

Environment.GetFolderPath(Environment.SpecialFolder.Personal)だと、Androidで例外が発生しちゃう。
下記によるとUserProfileが推奨らしいが、ApplicationDataでも動いた。
ただ、iPhoneだとUserProfileを指定すると例外が発生しちゃうので、結局わけるしかないのか…。

    string path = "";
#if ANDROID
    path = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), FILENAME);
#elif IOS
    path = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.Personal), FILENAME);
#endif

iOSのInfo.plist

特にXamarinから移行している場合。
スプラッシュアイコンを指定した場合、Info.plistのUILaunchStoryboardNameタグを削除するのを忘れずに。

あと、UIMainStoryboardFileタグも、移植してしまっていれば削除する。
でないと、起動したときに例外ですっ飛んでしまう。

AndroidはListViewが重すぎてフリーズしている説

iOSならサクッと動いてるんだけどなぁ…。

iOSは起動処理にブレークポイントを貼らない

途中で止めてしまうと、アプリも終了してしまう。


他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)