Upload
lee-choong-geun
View
838
Download
0
Embed Size (px)
Citation preview
Xamarin for Androidを試してみた
2013/12/08 李充根
Mono知ってますか?
.NETのオープンソース実装
.NET Framework互換のMono実行環境及びC#コンパイラや標準ライブラリなどが付属
Linuxなどで.NETアプリが起動する!
Unityなどにも使われている
ちなみにIKVM.NETという.NET(Mono)上にJavaVMを実装するというわけのわからないものある
じゃあXamarinって何よ
Monoプロジェクト主導している企業、及びそこが出している製品
IDEのXamarin Studioなどをだしている
C#でiOSやAndroidアプリを開発できるXamarinForAndroid、XamrinTouchがある
Xamarin For Android
C#を使ってAndroid開発を行える開発ツール
Android標準のDalvikVMの代わりに同梱されているMonoVMが走ってJITコンパイルによりアプリが動作する
Xamarin StudioほかプラグインとしてVisual Studioでも動作する(未検証)
ビルドされたAPKはランタイムを含んでいるため大きい(HelloWorldで3.5MB)
XamarinTouch
iOS用の開発ツール
こちらはC#をネイティブコード(Objective-C)に変換してコンパイルする
そのためダイナミックに動作するC#特有の一部機能(reflection等)は非対応
Macをサーバとして使うことによりVisual Studioでも開発可能らしい(調べてない)
iOS開発環境が無いため不使用
他のクロスプラットフォーム開発環境との違い
Titanium
UIやIOのアクセスなどはプラットフォーム固有のものを使うため共通化できない
ロジックの部分の共通化しかできない
Adobe AIR
ランタイムがアプリにパッケージされている
アプリとランタイム間で互換性問題が発生しない
ファイルサイズは大きい
開発の基本大体はJavaと一緒
Javaの文法で書かれているところをC#風に書き換えるだけで何となく分かる
IDEの推測候補により大体の使い方は見えてくる
ソリューションのフォルダ構成はeclipseとほぼ同様なので迷うことはない
レイアウト等のXMLファイルが.axmlとなっているが中身は他と変わらずGUI編集画面もある
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);
}}
delegateもラムダ式もあるんだよ
AndroidのJavaは未だに6!!(せめてそろそろ7ベースにならんもんか)
(ちなみにAndroidのバイトコードはソース→(JDK)→Javaバイトコード→(ADK)→Dalvikバイトコードの流れでコンパイルされる)
来年の3月に出るJDK1.8でようやく対応されるラムダ式!Androidでの対応は未定
それがXamarinなら今にでも使えるよ
使い方 Xamarin for AndroidではADKでのListenerがeventになっている
そのためdelegateで複数のメソッドを追加できる
例:Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += hoge;
……
void hoge(){
i++;
}
使い方
匿名関数にするbutton.Click += delegate{
i++;
};
ラムダ式にするbutton.Click += () => i++;
Jarライブラリが使えたらそれはとっても嬉しいなって
Androidの開発なので既存資産の流用としてJarライブラリを使いたい時がある
Jarをバインドする仕組みも用意されている
方法は簡単で新規ソリューションから「Android Java Bindings Library」を選択するだけ
あとはソリューションのJarsフォルダに使いたいJarファイルを突っ込めばいいだけ
使う側ソリューションは参照に追加すれば良い
私ってホントバカ
と実際にやってみようとTwitter4Jをバインド
させたところ謎のビルドエラーにより使用できなかった
アセンブリ参照の不足?
やっぱりまだ安定度は低いかも……
その他 ライセンス Starterのお試しライセンスだとILコード(バイトコー
ド)で32KBまでしかビルドできない 個人開発者向けのライセンスは$299ドル もう少し安ければ検討するけど……
32KBでもそれなりに遊べるのでインストールだけでもどうですか?
MacでC#使うことができるようになりますし 速度 DalvikVMを介さないコードなので他のものに比べる
と比較的高速
ご清聴ありがとうございました