Visual Studio 2017を用いたマルチプラットフォーム開発(Xamarin)~ デバッグ編
はじめに
前回作成した、新規プロジェクトをデバッグ実行するまでを下記に示します。
UWPデバッグ実行
UWPアプリケーションのデバッグは、以下の構成でデバッグ実行します。
「►ローカルコンピューター」を押下し、デバッグを実行します。
実行後、以下の画面のように、UWPのアプリケーションが起動します。
※空プロジェクトでは、画面表示に「Welcome to Xamarin Forms!」と表示される。
Androidデバッグ実行
Androidアプリケーションのデバッグは、以下の構成でデバッグ実行します。
Androidエミュレータが起動するため、かなりスペックが必要となります。
※筆者のビルド環境は、以下の通りですが、起動に時間が掛かってしまいます。
Core i7&16GB以上の環境で行った方が、ストレスはないと思います。
- CPU:Core i5(7th)
- メモリ:8GB
なお、Androidのデバッグの場合は、ソリューション(Xamarin.Android)から、「配置」を行わないとデバッグ実行できないかもしれません。
実行後、以下の画面のように、Androidのアプリケーションがエミュレータ上で起動します。
iOSデバッグ実行
iOSのアプリケーションのデバッグは、以下の構成でデバッグ実行します。
ここでのiOSのデバッグ実行は、Simulatorを使用しますが、デバッグ実行するには、Mac側の実機が起動していることが前提条件となります。
また、Mac側に予め下記に示す設定が必要となります。
環境設定から、共有フォルダの設定画面を表示します。
共有フォルダの設定にて、「リモートログイン」を有効にします。
リモートログインのアクセス権限として、Macのログインユーザーを設定します。
「►Simulator」※を押下し、デバッグを実行します。
接続可能な、Macの機器が表示されます。同一LAN内であれば表示されると思います。
※表示されない場合は、Macの追加にて、「IPアドレス」で追加します。
Macのリモートログインの「ユーザー名」「パスワード」を入力し、「ログイン」を押下します。
実行後、以下の画面のように、iOSのアプリケーションがエミュレータ上で起動します。
注意事項
UWPでのビルドおよびデバッグは、Windowsの設定で、以下のように「開発者モード」にチェックを入れておく必要があります。
Androidでのビルドおよびデバッグは、Visual StudioのAndroidプロパティ設定で、以下のように「Fast Deploymentの使用(デバッグモードのみ)」のチェックを外す必要があります。
※デフォルト設定は、チェックオンになっています。
※これを外さないとエミュレータの場合、アプリケーションが起動しません。
実際に、これでハマりましたので、気を付けてください。。。
デフォルトはオフ設定にしてVisual Studioをリリースして欲しいものです。(笑)
iOSでのビルドおよびデバッグは、Visual Studio 2017 Version 15.2 の場合、下記エラーメッセージが表示されます。
Xamarinの障害(バグ)かと思います。
Can not resolve reference: C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/ja/mscorlib.resources.dll
対処方法は、以下の通りです。
Visual Studioのインストールフォルダより、ターゲットファイルを編集する必要があります。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Xamarin
上記のファイルを開き、PropertyGroupに下記を追加します。
<FrameworkPathOverride>$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)</FrameworkPathOverride>
例)
<PropertyGroup>
<XamarinAppleSdkTargetsImported>true</XamarinAppleSdkTargetsImported>
<FrameworkPathOverride>$(TargetFrameworkRootPath)$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)</FrameworkPathOverride>
</PropertyGroup>
また、今回、Xamarinというプロジェクトを作成したのですが、Xamarin.iOSの場合、アセンブリ名が被るらしく、下記のビルド時エラーが発生します。
Application name 'Xamarin.iOS.exe' conflicts with an SDK or product assembly(.dll)name.
そのため、Xamarin.iOSのプロパティから、アセンブリ名「Xamarin2.iOS」、限定の名前空間「Xamarin2.iOS」に名前を変更しました。
※「Xamarin」という製品名の名前をプロジェクトに付けたのが迂闊でした(笑)