Edited at
XamarinDay 3

Xamarinでよくハマる事と対処方法


Xamarinでよくハマる事と対処方法

本記事は、Xamarin Advent Calendar 2018 の3日目となります。

明日は @hypermild さんです。よろしくお願いします!


はじめに

Xamarinで(個人的に)よくハマる事と対処法をまとめてみました。


環境


  • Windows


    • Windows 10 Pro

    • Visual Studio 2017 Community (Ver15.9.3)



  • macOS


    • MacBook Air (Early 2014)

    • macOS High Sierra (Ver10.13.6)

    • Visual Studio for Mac Community (Ver7.7)



  • Android端末(実機)


    • Nexus 5X (Android Ver8.1.0)



  • iOS端末(実機)


    • iPhone 7 (iOS Ver12.1)




よくハマること


Androidのビルドが失敗する

Windowsの場合は、フォルダパスが長すぎると失敗します。

そのため、プロジェクトフォルダをCドライブ直下などに移動させましょう。


いつもなら直ぐ終わるビルドが10分以上待っても終わらない

まずはビルドログが表示されているか、確認しましょう。

上記のようにビルドログが表示されていない場合は、ビルド開始時に失敗している可能性が高いです。

この場合は、ビルドメニューのキャンセルを選択してビルドを中止します。

数秒~十数秒ほど待つとビルドが中止されるので、再度ビルドを行えばOKです。


Androidで配置エラーが発生する

よく見るこいつです。

APKファイルをAndroid端末にインストール失敗すると発生するようです。

原因としては下記が考えられます。


  • 転送すべきAPKファイルがそもそもない

  • APKファイルはあるけどインストールに失敗する


転送すべきAPKファイルがそもそもない

ビルドが失敗し、APKファイルが作成されていない可能性があります。

Hogehoge.Android\bin\Debugフォルダの中にfugafuga.apkファイルがあるかを確認してみましょう。

もし存在しないのであれば、リビルドしてAPKファイルを作成しましょう。

APKファイルが作成されない場合は、ビルドに失敗している可能性があります。ソースコード等を見直しましょう。(構成マネージャーも見たほうが良いかもしれません)


APKファイルはあるけどインストールに失敗する

インストールできないAPKファイルが作成されていると考えられます。

コマンドで直接インストールしてみましょう。

$ cd Hogehoge.Android\bin\Debug

$ adb install -r fugafuga.apk

おそらく失敗すると思います。表示されるエラーメッセージで検索して原因を調査しましょう。

ありがちなのは下記だと思います。


  • 作成したアプリのversionCodeが小さい

  • インストール済みAPKと署名が異なる


    • たとえば、デバッグ用とリリース用で署名が異なる



  • サポートしていないアーキテクチャ


    • たとえば、armeabi-v7aのみでビルドしたAPKだが、Androidエミュレータ(x86_64)にインストールしようとしている

    • 昔これで2時間ぐらいハマりました……




謎のビルドエラーが発生する

この現象は、いくつかパターンがあります。

例えば、下記のようなビルドエラーが発生します。


  • MSB4018: "LinkAssemblies" タスクが予期せずに失敗しました。

ほかにも


  • AggregateException: 1つ以上のエラーが発生しました。

とかです。よく分かりませんね。私も分かりません。

こういう場合は、


  • リビルド(クリーンしてからビルド)

  • Visual Studioを再起動

でだいたい直ります。

それでも直らない場合は、


  • objフォルダやbinフォルダを削除


    • git管理下なら、git clean -dfxが手っ取り早いかもしれません



  • PCを再起動

してみましょう。

それでも直らない場合は、頑張ってください……。


iOS端末(実機)を正しく認識しない(有線)

今のところVisual Studioで見たことはないですが、XcodeとiOS端末を有線接続した際に見たことがあるので、紹介しておきます。

Xcode上ではiOS端末を認識しています(端末名は表示される)が、デプロイに失敗します。(いつまで経ってもデプロイできない)

この場合は、iOS端末を再起動すると直ることが多いです。

それでも直らない場合は、アクティビティモニタからiTunes Helperを強制終了させ、MacとiOS端末を再接続すると直りました。(私の場合)


まとめ

上記内容以外にも不可解な現象に遭遇するかもしれませんが、クリーンビルドや再起動で直る事が多いです。


  • リビルド(クリーンしてからビルド)

  • Visual Studioを再起動

  • objフォルダやbinフォルダを削除

  • PCを再起動

  • 端末を再起動