今回は Android8.0 Oreo に対応したという Xamarin 4.7.10.22 をインストールして検証してみました。
Visual Studio を起動し、既存のソリューションを読み込んだところで早速エラーが出ました。毎度のこと、わかってはいますが、テストしたんですか?とあきれてしまいます。
前提条件
・Windows10 Pro 64Bit
・Visual Studio 2015 Community Update3
・Xamarin 4.7.9.45 (NuGet Xamarin.Forms 2.4.0.282)
・macOS Sierra 10.12.6 / Xcode 9 / Xamarin.iOS 11.0.0.0
1.エラーの内容
Visual Studio 2015 を起動してソリューションを読み込んだ時点で、以下のようなエラーが発生します。
’XamarinShellPackage’ パッケージは正しく読み込まれませんでした。
構成の変更または別の拡張機能のインストールが原因で問題が発生している可能性があります。ファイル 'C:\Users\UserName\AppData\Roaming\Microsoft\VisualStudio\14.0\ActivityLog.xml' を調べると、より詳細な情報を取得することができます。
Visual Studio を再起動するとこの問題を解決できる可能性があります。
引き続きこのエラーメッセージを表示しますか?
言われるがまま VisualStudio を再起動したところフリーズしてしまいました。。。
ActivityLog.xmlの内容は以下の通りでした。
<entry>
<record>550</record>
<time>2017/10/20 15:03:11.721</time>
<type>Error</type>
<source>VisualStudio</source>
<description>LegacySitePackage failed for package [XamarinAndroidPackage]Source: 'Xamarin.VisualStudio' Description: オ途中省略;System.NullReferenceException: オ途中省略 Clide.Diagnostics.UserTraceExtensions.UserError(ITracer tracer, Exception exception, String format, Object[] args) 場所 C:\d\lanes\5156\fe36becf\source\xamarinvs\src\Core\VisualStudio\Diagnostics\UserTraceExtensions.cs:行 77
 場所 Xamarin.VisualStudio.Android.XamarinAndroidPackage.Initialize() 場所 C:\d\lanes\5156\fe36becf\source\xamarinvs\src\Core\VisualStudio.Android\XamarinAndroidPackage.cs:行 170
 場所 Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)</description>
<guid>{GUID}</guid>
<hr>99999999 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
<entry>
<record>551</record>
<time>2017/10/20 15:03:11.723</time>
<type>Error</type>
<source>VisualStudio</source>
<description>SetSite failed for package [XamarinAndroidPackage](null)</description>
<guid>{GUID}</guid>
<hr>99999999 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
<entry>
<record>552</record>
<time>2017/10/20 15:03:16.298</time>
<type>Error</type>
<source>VisualStudio</source>
<description>End package load [XamarinAndroidPackage]</description>
<guid>{GUID}</guid>
<hr>99999999 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
私には意味不明でわかりません。
既にこのバグ情報はフォーラムで騒がれています。
https://forums.xamarin.com/discussion/104657/current-release-15-4-feature-release
2017/11/01追記
Xamarin 4.7.10.33 でも同様の現象でした。
2017/11/24追記
Xamarin 4.7.10.38 でも同様の現象でした。
2.対応方法
(1)新規ソリューションは作成&実行が可能ですが、作成したソリューションのうちAndroidプロジェクトのフォルダが削除できませんでした。OSを再起動したところ削除ができました。
(2)既存ソリューションについてはソリューションフォルダの直下にある .vsフォルダ(隠しフォルダ)を削除したところ、VisualStudio が正常に起動でき、正常にAndroid/iOSアプリを起動することはできました。
(3)他の既存ソリューションは正常に VisualStudio が起動したのですが、iOSアプリでまれに画面遷移時にフリーズしていました。次に VisualStudio を再起動しましたが、ソリューションのロード時にフリーズしました。この現象も .vsフォルダを削除したところ正常に動作するようになりました。
3.新機能
新機能については 大まかには以下の通りです。
(1)iOSプロジェクトにおいて、Background Fetchをシミュレートする機能が追加になっています。
(2)Xamarin Live Player の機能を有効にする設定が以下の画面に追加されています。
ツールメニュー>オプション>Xamarin>その他
(3)Android 8.0 Oreo に正式対応の様です。
Androidのプロジェクトは指定していない場合、ターゲットフレームワークが Android 8.0に自動的に変更になります。
Android 8.0 Oreo のエミュレータを起動する設定方法につきましては次回の記事でご紹介していますので、ご参考ください。
※ただし、VSからの起動ができていません。現在調査中です。
VSの出力ウィンドウに以下のようなログが出力されます。
2>Android8 の配置を開始しています...
2>エミュレーター Android8 を起動しています...
2>C:\Android\ANDROI~1\tools\emulator.EXE -partition-size 512 -no-boot-anim -avd Android8 -prop monodroid.avdname=Android8
2>Hax is enabled
2>Hax ram_size 0x7e800000
2>HAX is working and emulator runs in fast virt mode.
2>audio: Failed to create voice `goldfish_audio_in'
2>qemu-system-i386.exe: warning: opening audio input failed
2>emulator: Listening for console connections on port: 5554
2>emulator: Serial number of this emulator (for ADB): emulator-5554
emulator.exe のコマンドパラメータで -no-boot-anim というパラメータがありますが、コマンドプロンプトからはそのパラメータを除外して実行するとAndroid 8.0 Oreo が起動することを確認しています。
4.その他の不具合について
Google PlayにアーカイブしてUpする際に以下のようなエラーが発生します。
Google Play ストア: 認証
'Google.Apis.Json.NewtonsoftJsonSeirializer' のタイプ初期化子が例外をスローしました。
次のバージョンアップまでしばらく手動でアップしなければならないようです。
最後までお読みいただきありがとうございます。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
https://itblog.dynaspo.com/blog-entry-81.html
- 関連記事
-