15
Xamarin for Android試してみた 2013/12/08 李充根

xamarin for android試してみた

Embed Size (px)

Citation preview

Page 1: xamarin for android試してみた

Xamarin for Androidを試してみた

2013/12/08 李充根

Page 2: xamarin for android試してみた

Mono知ってますか?

.NETのオープンソース実装

.NET Framework互換のMono実行環境及びC#コンパイラや標準ライブラリなどが付属

Linuxなどで.NETアプリが起動する!

Unityなどにも使われている

ちなみにIKVM.NETという.NET(Mono)上にJavaVMを実装するというわけのわからないものある

Page 3: xamarin for android試してみた

じゃあXamarinって何よ

Monoプロジェクト主導している企業、及びそこが出している製品

IDEのXamarin Studioなどをだしている

C#でiOSやAndroidアプリを開発できるXamarinForAndroid、XamrinTouchがある

Page 4: xamarin for android試してみた

Xamarin For Android

C#を使ってAndroid開発を行える開発ツール

Android標準のDalvikVMの代わりに同梱されているMonoVMが走ってJITコンパイルによりアプリが動作する

Xamarin StudioほかプラグインとしてVisual Studioでも動作する(未検証)

ビルドされたAPKはランタイムを含んでいるため大きい(HelloWorldで3.5MB)

Page 5: xamarin for android試してみた

XamarinTouch

iOS用の開発ツール

こちらはC#をネイティブコード(Objective-C)に変換してコンパイルする

そのためダイナミックに動作するC#特有の一部機能(reflection等)は非対応

Macをサーバとして使うことによりVisual Studioでも開発可能らしい(調べてない)

iOS開発環境が無いため不使用

Page 6: xamarin for android試してみた

他のクロスプラットフォーム開発環境との違い

Titanium

UIやIOのアクセスなどはプラットフォーム固有のものを使うため共通化できない

ロジックの部分の共通化しかできない

Adobe AIR

ランタイムがアプリにパッケージされている

アプリとランタイム間で互換性問題が発生しない

ファイルサイズは大きい

Page 7: xamarin for android試してみた

開発の基本大体はJavaと一緒

Javaの文法で書かれているところをC#風に書き換えるだけで何となく分かる

IDEの推測候補により大体の使い方は見えてくる

ソリューションのフォルダ構成はeclipseとほぼ同様なので迷うことはない

レイアウト等のXMLファイルが.axmlとなっているが中身は他と変わらずGUI編集画面もある

Page 8: xamarin for android試してみた

Activityの基本namespace SampleForAndroid{

[Activity (Label = “SampleAndroid", MainLauncher = true)]public class MainActivity : Activity{

protected override void OnCreate (Bundle bundle){

base.OnCreate (bundle);SetContentView (Resource.Layout.Main);

}}

Page 9: xamarin for android試してみた

delegateもラムダ式もあるんだよ

AndroidのJavaは未だに6!!(せめてそろそろ7ベースにならんもんか)

(ちなみにAndroidのバイトコードはソース→(JDK)→Javaバイトコード→(ADK)→Dalvikバイトコードの流れでコンパイルされる)

来年の3月に出るJDK1.8でようやく対応されるラムダ式!Androidでの対応は未定

それがXamarinなら今にでも使えるよ

Page 10: xamarin for android試してみた

使い方 Xamarin for AndroidではADKでのListenerがeventになっている

そのためdelegateで複数のメソッドを追加できる

例:Button button = FindViewById<Button> (Resource.Id.myButton);

button.Click += hoge;

……

void hoge(){

i++;

}

Page 11: xamarin for android試してみた

使い方

匿名関数にするbutton.Click += delegate{

i++;

};

ラムダ式にするbutton.Click += () => i++;

Page 12: xamarin for android試してみた

Jarライブラリが使えたらそれはとっても嬉しいなって

Androidの開発なので既存資産の流用としてJarライブラリを使いたい時がある

Jarをバインドする仕組みも用意されている

方法は簡単で新規ソリューションから「Android Java Bindings Library」を選択するだけ

あとはソリューションのJarsフォルダに使いたいJarファイルを突っ込めばいいだけ

使う側ソリューションは参照に追加すれば良い

Page 13: xamarin for android試してみた

私ってホントバカ

と実際にやってみようとTwitter4Jをバインド

させたところ謎のビルドエラーにより使用できなかった

アセンブリ参照の不足?

やっぱりまだ安定度は低いかも……

Page 14: xamarin for android試してみた

その他 ライセンス Starterのお試しライセンスだとILコード(バイトコー

ド)で32KBまでしかビルドできない 個人開発者向けのライセンスは$299ドル もう少し安ければ検討するけど……

32KBでもそれなりに遊べるのでインストールだけでもどうですか?

MacでC#使うことができるようになりますし 速度 DalvikVMを介さないコードなので他のものに比べる

と比較的高速

Page 15: xamarin for android試してみた

ご清聴ありがとうございました