【Xamarin】AndroidのMobile用とWear用プロジェクト間でソースコードを共有する方法

こんにちはー、ニアです!

今回はXamarinネタで、AndroidのMobile用とWear用のプロジェクト間でソースコードを共有させてみたお話です。

MobileとWearアプリのハイブリッド開発が捗るかも!

1. Mobile用とWear用の両プロジェクトから参照できるソースコードを構成する

Visual Studioの共有プロジェクトを利用して、Mobile用とWear用の両プロジェクトから参照できるようにします。

イメージとしては、Visual Studio 2013にあった、Windows 8.1&Windows Phone 8.1のユニバーサルアプリのプロジェクト構成です。

Build a Universal Windows 8 app – Microsoft Docs

1.1. プロジェクトを作る

Visual Studioを起動し、新しいプロジェクトを作成ダイアログを開きます。まずは、「共有プロジェクト」を作成します。

共有プロジェクトを作成したら、ソリューションエクスプローラーのソリューション名を右クリックし、「追加」>「新しいプロジェクト」を選択します。

次は、「空のアプリ(Android)」を選択してMobleアプリ用のプロジェクトを作成します。

名前は「【共有プロジェクト名】.Mobile」のような形式にすると管理しやすいですよ。

同様の手順で、今度は「Wear アプリ(Android)」を選択してWearアプリ用のプロジェクトを作成します。

Nia04.png
プロジェクト名を「Xamarin」とか「Wear」とかにすると、プロジェクトテンプレートのエクスポート機能を使った時、プロジェクトファイルにバグが発生するから気を付けてね!

以上の手順で、以下の3つプロジェクトがソリューション内に追加されていればOKです。

  • 共有プロジェクト
  • Mobile用プロジェクト
  • Wear用プロジェクト

1.2. 共有プロジェクトにコードを追加

共有プロジェクトにコードを追加してみましょう。

ソリューションエクスプローラー寧の共有プロジェクトを右クリックし、「追加」>「クラス」を選択します。

クラス」を選択して、ソースファイルを作成します。

using System;
using System.Collections.Generic;
using System.Text;

namespace Sample {
	class SampleShared {
		public static string Greeting => "Hello World!";
	}
}

1.3. 共有プロジェクトを参照に追加

Mobile用・Wear用のプロジェクトから共有プロジェクトのソースコードを利用するには、共有プロジェクトを参照に追加する必要があります。

Nia02.png
なおSample.Mobile名前空間内では、Sample名前空間にあるコードを参照できます。

ソリューションエクスプローラー内のMobile用プロジェクトにある「参照」を右クリックし、「参照の追加」を選択します。

左側のツリーから「共有プロジェクト」を選択し、中央のリストにある共有プロジェクトにチェック入れて、OKボタンを押します。

これで、Mobile用プロジェクトは共有プロジェクトのソースコードを利用できるようになりました。

Wear用プロジェクトも同様の手順で、共有プロジェクトを参照に追加します。

これで、Mobile用とWear用プロジェクトでソースコードを共有することができました!

GitHubにサンプルソースファイルを置いておきました。

2. FAQ

2.1. アセットやリソースファイルは共有できる?

Nia-TN-SDfs-sad.png
残念ながら、できないみたい。

共有プロジェクトで対応するビルドアクションにAndroid用の設定(AndroidAssetやAndroidResource)がないので、そこにアセットなどを入れても、Android用のアセットやリソースとして認識されないのです。

2.2. Visual Studio for Macでも動かせる?

Nia-TN-SDfs-smile1.png
動かせますよ!

2.3. 共有コード内で、Wear用の固有のコードを書きたい!

Nia-TN-SDfs-wink.png
Wear用のプロジェクトに条件付きコンパイルシンボルを定義することで実現できます!

Wear用のプロジェクトのプロパティを開き、左側のリストから「ビルド」を選択します。

構成から「すべての構成」を選択し、条件付きコンパイルシンボルに「ANDROID_WEAR_APP」と入力して保存します。

これで、共有プロジェクト側は#ifディレクティブを使って、Wearプロジェクト固有のコードを記述できます。

// 共有コード

#if ANDROID_WEAR_APP
	// Wear用の固有コード
#endif

// 共有コード

4. 次回: ニア、テンプレート作りに悪戦苦闘

次回は、そのプロジェクトのテンプレートを作成した時のお話を送りしたいと思います。

作成方法の他、苦労したことや便利な機能などを色々紹介します。

Nia02.png
Watch Faceとコンパニオンアプリもこの方法でいけそう・・・?

[END]

コメント

タイトルとURLをコピーしました