【Xamarin】【Android】Releaseビルドでクラッシュする

みなさんどうもこんにちは.それともこんばんはかな?まぁそんなことはどうでもいいんですけどね
ちょっと最近Androidアプリを作ってて,Debugビルドでは実行できたのにReleaseビルドで実行しようとするとcrashするっていう問題に直面したのでその解決法をば

環境

筆者の環境はこんな感じです

  • Visual Studio for mac
  • Xamarin.Android
  • Xamarin.Android.Support.v7
  • Xamarin.Android.Support.Design

エラー内容

冒頭で書いたように、Debugでは動いていたのにReleaseではcashしてしまいました。
「ははーん?これは最適化に殺されてるな???」と思い最適化オプションを消してみるもダメ、proguardを無効化してもダメで、デバッグ情報を有効化してログを見てみると次のような出力が….(一部抜粋)

まず初めに目に付いたのが,54行目で No original dex files found for dex locationって言われてるから,Multi-dexオプションがダメなのかなって思って無効化してみたけど相変わらずのcrash

で,11行目とか21行目とかで出てくるandroid.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class android.support.v7.widget.FitWindowsLinearLayoutってエラーなんだけど,こんなレイアウト身に覚えがないんだよね.

このレイアウトを検索ワードに指定してみると、ソースコードからは見つからず、中間ビルドのディレクトリにあるxmlから見つかりました。
つまり、これは僕の書いたコードと無関係の部分でcrashしていることがわかりました。
いっけな〜い殺意殺意🎶って気分でしたね笑

解決法

なんか調べてみると同じことになってる人は沢山いるみたいです。日本人にはあんまおらんみたいですけど。

結論から言うと、以下のアセンブリをリンクするとクラッシュしてしまうみたいですね。

  • Xamarin.Android.Support.v4
  • Xamarin.Android.Support.v7

てことで、リンク対象からこいつらを外してやれば無事解決ってわけです。サポートライブラリってリンクしちゃいけないんですね。。。

てことで,リンカーのセクションをこんな感じに設定します.

こいつらを再インストールすれば治るとか言った情報もあるようなので一概にこれといった解決方法はないのかもしれませんが,気になったら試してみてください.

あわせて読みたい

コメントを残す

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