Download presentation
Presentation is loading. Please wait.
1
開発者目線でAndroidとiPhoneを比較してみる
豆蔵 藤田泰介
2
技術情報 iPhone iPhone Dev Center iPhone Dev Center(日本語) Android
Android - An Open Handset Alliance Project Android - Open Handset Alliance プロジェクト
3
OS iPhone Mac OS Xベース Android Linuxベース
4
開発言語/開発環境 iPhone Objective-C 2.0(ガベージコレクションなし) Xcode
Interface Builder(画面デザイン用の開発環境) Android Java SDK 1.5または1.6相当のもの(SunのJavaとVMが違うのでこのような書き方をしています) Eclipse ADT(Eclipseプラグイン)
5
動作環境 iPhone Mac OS X 以上 Toolchainというオープンソースの開発環境だとUnix/Linux系OSで開発可能 Android Windows Mac Unix/Linux
6
アーキテクチャ iPhone Android
7
フレームワーク iPhone Cocoa Foundation(Mac OS X共通) UIKit Android
Java SDK相当のもの Android Framework
8
MVCパターンからみた違い(iPhone)
Model 任意(Model用の仕組みがない) View UIKitライブラリ、UIViewのサブクラス Interface Builerを使ってデザイン デザインの情報はxibファイルに保存される(中はXML) Controller UIViewController UINavigationController UIImagePickerController UITabbarController UITableViewController
9
MVCパターンからみた違い(Android)
Model ContentProvider View android.view,android.widgetパッケージにある部品群 レイアウトXMLにデザイン定義を書く デザインの情報はxmlファイルに保存される Controller Activity ListActivity MapActivity ExpandableListActivity TabActivity
10
Viewの実装方法 AndroidとiPhoneのViewの実装方法を比較する
11
イベントの仕組み iPhone Target Action Responder Chain Android イベントリスナー
12
イベントの実装方法 AndroidとiPhoneのイベントハンドラの実装方法を比較する
13
ライフサイクル iPhone loadView viewDidLoad viewWillAppear viewDidAppear
viewWillDisappear viewDidDisappear Android onCreate onStart onResume onPause onStop onDestroy
14
メモリ領域圧迫時のイベント iPhone didReceiveMemoryWarning Android onLowMemory
15
データ保存の仕組み Androidの場合SQLiteに保存したデータをContent Provider化することで他のアプリとデータベースを共有することができます。iPhoneは今のところデータベースがアプリごとに独立しているので他のアプリと共有することはできないようです。 iPhone オブジェクトのシリアライズ プロパティリスト(XML) SQLite Android
16
バックグラウンドプロセス iPhone 不可(音楽など一部例外あり) Android Service
17
グラフィック iPhone 2D Quartz 2D(Mac OS X共通) Core Image(Mac OS X共通) 3D
OpenGL ES ベクターグラフィック 対応 Android SGL android.graphicsパッケージにある部品群 非対応(代わりに9-patchを使う)
18
アニメーション iPhone Core Animation(Mac OS X共通) Android
android.view.animationパッケージにある部品群
19
加速度計 iPhone UIAccelerometer(加速度計の管理) UIAccelerometerDelegate(加速度イベント)
Android 加速度計に限らずあらゆるセンサーを管理するSensorManagerクラスがありそこで管理されている SensorManager(センサーの管理) SensorListener(センサーイベント) 詳細 AndroidとiPhoneの加速度計アプリの実装方法を比較してみる
20
リソース(iPhone) Resourcesフォルダ以下に保存 NSBundleクラスからmainBundleオブジェクトを取得する
// 画像のパスを取得する NSString *imagePath = [NSBundle mainBundle] UIImage *image = [UIImage imageAtPath:imagePath];
21
リソース(Android) Resourcesフォルダ以下に保存 Rクラスの定義を使って取得する // Activityクラスでの取得方法
Drawable drawableb = getResources().getDrawable(R.drawable.hoge)
22
国際化(iPhone) 言語.lproj(例:Japanese.lproj)フォルダを作成しそこにLocalizable.stringsファイルを格納する Localizable.stringsファイルにローカライズしたメッセージを格納する 文字以外にもプロパティリストやnibファイル、SQLiteデータベースなどもローカライズできる
23
国際化(Android) 各言語ごとに/res/valuesフォルダを作成しstrings.xmlファイルを格納する
今のところ文字列以外はローカライズできないみたいです。 res |--values-en | `--strings.xml `--values-ja `--strings.xml
24
ロケーション iPhone Core Location CLLocationManager
CLLocationManagerDelegate CLLocationManagerを直接インスタンス化できる Android android.locationパッケージのクラス群 LocationManager LocationListener LocationManagerを直接インスタンス化することができない。 Context.getSystemService(Context.LOCATION_SERVICE)メソッドを使ってインスタンスを取得する
25
参照 開発者目線でAndroidとiPhoneを比較してみる
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.