読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin.Forms 1.5.1 で Android アプリがビルド出来なくなった場合の対処方法

Xamarin Xamarin.Forms Xamarin.Android

こんにちは。エクセルソフトの田淵です。

2015/10/20 に Xamarin.Forms 1.5.1 がリリースされました。2015/10/30 現在の最新版は Hotfix が当たった 1.5.1.6471 になっています。

さて、この 1.5.1 から、

  • Xamarin.Android.Support.v4 (≥ 23.0.1.1)
  • Xamarin.Android.Support.Design (≥ 23.0.1.1)
  • Xamarin.Android.Support.v7.AppCompat (≥ 23.0.1.1)
  • Xamarin.Android.Support.v7.CardView (≥ 23.0.1.1)
  • Xamarin.Android.Support.v7.MediaRouter (≥ 23.0.1.1)

が必要になりました。現在 Xamarin.Forms のプロジェクトテンプレートでインストールされる Xamarin.Forms は 1.3.3.6323 で、確か ListView.HasUnevenRows にバグがあり、高さ可変の ListView が作れなかった気がしますので、最新にしないといけません。で、バージョンアップすると、以下のように Android サポートライブラリも追加されます。

f:id:ytabuchi:20151030160440p:plain:w300

んで、人によっては

f:id:ytabuchi:20151030155838p:plain:w450

バージョンアップした後でこのように、ギャァ!! エラーがたくさん!!! という方がいらっしゃるはず。私のように…

エラーはなぜ起こるのか?

例えばエラーメッセージで Please install package: 'Xamarin.Android.Support.v7.CardView' available in SDK installer. Java library file C:\Users\<USERNAME>\AppData\Local\Xamarin\Android.Support.v7.CardView\23.0.1\embedded\classes.jar doesn't exist. が出ている場合、該当フォルダ

%LOCALAPPDATA%\Xamarin\Android.Support.v7.CardView\23.0.1 を開いてみてください。本来は以下のように zip ファイル、content フォルダ、embedded フォルダがあり、

f:id:ytabuchi:20151030161128p:plain:w450

embedded フォルダの中に、上記エラーで無いよ!と言われている classes.jar があるはずなのです。

f:id:ytabuchi:20151030161252p:plain:w450

ルートフォルダにある android_m2repository_r20.zip ファイルは恐らく Android ネイティブの CardView ライブラリだと思います。そして、133MB と非常に大きなものです。サイズが大きいので、Xamarin では一度ダウンロードしたライブラリはここにキャッシュして次からこのフォルダを見に来るようです。

エラーが出ている皆さんは、以前に Xamarin.Forms をバージョンアップしようとして、Visual Studio が固まってしまって(と思って)、強制終了をしたことは無いでしょうか? 私は何回もありました。実は頑張って何百MB ものライブラリをダウンロードして展開していたと思われます。

途中で強制終了してしまうと恐らく zip のダウンロードや展開が不十分で jar がない状態になります。そのため、次にこのフォルダを見に来た Visual Studio が jar ファイルが無い!とエラーを出すのだと推測しました。

対処方法

%LOCALAPPDATA%\Xamarin にある、エラーメッセージで jar がないと言われている NuGet ライブラリのフォルダ を削除して、再度ビルドしてみてください。また、Android SDK は最新にしておく必要がありそうです。

私は一度クリーンにしたかったので、全部削除したので、現在はキレイな感じですw

f:id:ytabuchi:20151030162305p:plain:w450

2016/5/12 追記
また、同じフォルダに zips というフォルダも存在する場合、そちらも削除してください。

解決しない場合は、Android プロジェクトの Xamarin.Forms ライブラリをアンインストール (同時に Android.Support ライブラリもアンインストールされます) して、再度 Xamarin.Forms 1.5.1.6471 をインストールして、再ビルドしてみてください。

Android.Support ライブラリのダウンロードは非常に時間が掛かりますが、辛抱強く待ち、再ビルドすればエラーは出なくなるはずです。

参考

visual studio 2013 - Error after updating the Android.Support Library v7 AppCompat to the 21.0.3 version - Stack Overflow

Xamarin 気になった方は

是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。

以上です。