2013年3月5日火曜日

Xamarin 2.0 のインストール と Hello Android

C# で Android OS や iOS や Mac OS のアプリケーションを作成できる Xamarin を使ってみたら、結構便利に使えました。(iOS と Mac OS のアプリ開発には、Mac OS が動いているコンピュータが必要。Android は Windows のみで可能)
C# を少し触ったことがあるなら、Eclipse と Android SDK で Android OS のアプリを作るよりも、とっつきやすいなと思います。開発環境のインストールも Xamarin のほうが手間なく簡単です。

作成できるアプリケーションのサイズが制限される (32KB) かわりに、無料で使用出来る STARTER 版もあるので、気軽に試用してみることができます。

Xamarin Studio のインストール

http://xamarin.com/ のトップページのわかりやすいところに、ダウンロードのリンクがあるのでインストーラーをダウンロードします。この時、名前とメールアドレスと使用目的のアンケートに答える必要があります。

ダウンロードしたインストーラを実行して画面の指示に従って数回クリックすると、JDK や Android SDK や Xamarin Studio とか必要な物を自動的にダウンロードしてインストールしてくれます。
インストールはこれだけで終了です。Eclipse を使う時のように、SDK を別々にインストールする必要が無いのでとても楽ちんです。

Hello, Android - 新規ソリューション(プロジェクト)の作成

動作テストとして新規のソリューション(Visual Studio でいうプロジェクト)を作成して、実行してみます。

Xamarine Studio を 起動したら、[ファイル]-[新規]-[ソリューション] を選択。

特別なことをしていなくても、メニューが日本語になっています。ありがたいですね。
「新しいソリューションダイアログ」で、[C#]-[Android]-[Android Application] を選択。

「名前」と「位置」は適当に指定します。

[OK] を押すとソリューションが作成されます。

Android エミュレーターで実行

すでに Hello, Android アプリケーションが組み込まれていて、なにやらコードが表示されていますが、気にせずこのまま実行してみましょう。

[実行]-[Start Debugging] を選択します。
「Select Device」ダイアログが表示されるので、ここで使用するエミュレーターを選択してから [Start Emulator] ボタンでエミュレーターを起動させます。エミュレーターの起動にはしばらく時間がかかります。

API_7 とか API_8 とかの API のレベルは Android OS のバージョンごとに決まっていて、Android 2.1 が API_7 、Android 4.1 が API_16 のように対応しています。好きなのを選べば良いです。
エミュレーターが起動しました。
エミュレーターが起動すると「Select Device」ダイアログで、起動したエミュレータを選択できるようになるので、選択して [OK] を押します。

少し待つと、Hello, Android アプリケーションが立ち上がります。
(初回の実行では C# の実行環境なんかをエミュレーターに転送するため、しばらく時間がかかります。2回目の実行からは早くなります。)
ボタンを押すと、押した回数が表示されます。

後でどんなコードで動いているのかを見てみましょう。

実機で実行

あらかじめ Android 端末のメーカーサイトから、使用する端末用の USBドライバーをダウンロードして、PC にインストールしておきます。

Android 端末側で、USBデバッグを有効にしておきます。
USB デバッグを有効にした端末を USB で PC に接続していると、デバイスの選択でエミュレーターと一緒に実機も表示されるようになるので、それを選択するだけで実機で実行出来ます。
動きました。簡単です。

エミュレーターよりさくさく動きますので、実機を持っているなら実機でデバッグしたほうが快適です。

どちらで実行するかの選択

実行するデバイス(エミュレーター)は [プロジェクト] - [Android Device Target] で選択出来ます。

Hello, Android のソースコード


"MainActivity.cs"

namespace test1
{
    [Activity (Label = "test1", MainLauncher = true)]
    public class Activity1 : Activity
    {
        int count = 1;

        // 以下が実行時に一回呼ばれるブロック
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button> (Resource.Id.myButton);
   
            // ↓ここでボタンのクリックイベントの処理を追加
            button.Click += delegate {
                button.Text = string.Format ("{0} clicks!", count++);
            };
        }
    }
}


Xamarin Studio のテキストエディタで日本語のコメントを入力する時に、変換中の文字が表示されなくて、ちょっと使いにくい。確定すると表示される。
そのうち改善されるといいなぁ。