Android自体のソースコードもそうだけど、最近いろんなオープンソースプロジェクトがSubversionから移行していたり、githubを使う機会もなんだか増えて来たのでgitの使い方を整理してみる。当方Subversionはまあまあ使っていて、OSX Snow Leopardという環境です。まずはインストールから。
Category: howto
-
iTunesConnectで”application executable is missing a required architecture”って怒られるときのXcode 4の対応の要点だけ
iTunes ConnectでSubmitするときに、
“application executable is missing a required architecture”と怒られるときがあります。どうも古いXcode 3系のプロジェクトをインポートすると起こるみたい(ちゃんと確認はしてない)Build Settingsで”Build Active Architecture Only”という項目を探し、配信用のターゲットの項目を”NO”に設定する。そうすると全ての有効なアーキテクチャに対してビルドできるので、エラーが回避できる模様。 -
Androidアプリから外部ブラウザに連携するときのsnippet要点だけ
すぐ忘れるのでメモ書き。要するにintentを使う。
-

Androidレイアウトの要点だけ: LinearLayoutでパーツを均等に配置したい
AndroidのUI制作で、LinearLayoutを使って画面の横幅のちょうど2等分にしたいときがあります。このようなときは、LinearLayoutされているパーツ(ボタンとか)にたいして”android:layout_weight”プロパティを設定します。これの使い方のちょっとしたコツのメモ。
-
AndroidでLayoutからイベントリスナの設定方法の要点だけ
どうやらAndroid 1.6かららしいんだけど、Layoutファイルにandroid:onClickというプロパティを指定することができます。例えばOK/Cancelボタンを配置した場合は、以下みたいなLayoutファイルになります。<Button android:text=“@string/label_button_cancel” android:layout_height=“wrap_content”android:layout_width=“wrap_content”android:id=“@+id/cancelButton”android:onClick=“onCancelClicked”/><Button android:text=“@string/label_button_ok”android:layout_height=“wrap_content”android:layout_width=“wrap_content”android:id=“@+id/OKButton”android:onClick=“onOKClicked”/>
こういう記述のあるlayout.xmlファイルをActivityの中でsetContentView()してやると、OKまたはCancelボタンをタップしたときに、そのActivityの中にあるandroid:onClickに指定した名前のメソッドを読んでくれます。listenerの設定とかが必要ないので、非常に便利。
メソッドのシグネチャは、public void aHandler(View v)なので、上記の例だとそれぞれ
public void onOKClicked(View v) {Log.d(“DEBUG”, “ok clicked”);}public void onCancelClicked(View v) {Log.d(“DEBUG”, “cancel clicked”);}みたいなメソッドだけを記述しておいてやればOK。 -
AndEngineのはじめかたの要点だけ
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #144fae}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
span.s1 {text-decoration: underline}
span.s2 {color: #000000}
Android用の2Dゲームフレームワークみたいなものを探してて、iOS界隈だとcocos2dがメジャーなんだろうけど、cocod2dのAndroid版というのはプロジェクトが分裂してる上に、どうも更新が止まってるか、凄く遅いっぽい。色々調べてたらAndEngineというのが有望に見えたし類似と言って良いっぽいので、調べてみることにした。OpenFeintとの連携もOKみたい(調べてないけど)。とりあえずはAndEngineを始めるに有用なポインタを簡単に整理してみます。 -
OSXのEclipseでコード補完有効にするやりかたの要点だけ
Androidに限らず、オープンソース系の開発環境のデファクトといって良いEclipseだけど、OSXだと標準インストールだとどうもキーバインドがコンフリクト?してしまってコード補完が効かないので、設定する必要があるというメモ。すぐ忘れるので。
OSX Snow Leopard + Eclipse Heliosで見てます。Heliosって3.6かな。
1.Eclipse起動
2.Eclipse(アプリケーションメニュー)>Preferences…>General>Keysを選択
3.”Word Completion”という項目を探して、選択
4.下の”Binding”っていうところを選んで、目的のキーバインドを押す。
5.”Apply”以上で、4で設定したキーバインドが効きます。ちなみに英語UIなのはご容赦を。エラーをぐぐる時とかに英語UIのほうが早いのですよ。
-
外部のActivityを明示的Intentで開始するやりかたの要点だけ
Androidアプリの開発で、パッケージ名およびActivity名が分かっているアプリを、自分のアプリから起動したい時がある。たとえばプリインストールのGoogle製アプリとか。
この場合も、自パッケージ内の明示的インテントと同様に起動することができる。具体的には以下みたいにする。
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.setClassName(“com.example.external.package”, “com.example.external.package.SomeActivity”);
//i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //外部Activityを自分のActivityスタックとは別に立てたいとき。
startActivity(i);注意点として、setClassName(String packageName, String ActivityName)するときに、ActivityName側もフルパッケージ名で指定する必要があること。これをしないとClassNotFoundExceptionになる。
あと、setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)しないと、例えば起動したアプリをHOMEボタンで終了した後にもう一回自分のアプリを立ち上げた時、自分のパッケージから起動したSomeActivityの方の画面が出てよくわからない事になる。これを避けるにはIntent.FLAG_ACTIVITY_NEW_TASKフラグを指定した状態でstartActivity()する。
このへんはTASKについて整理する必要がありそうだけど、別の機会にします。
-
iOS Notification(通知)バッジナンバー表示の要点だけ
iOSのNotificationでは、アプリケーションアイコンの右肩に数字(バッジ)を表示することができるけど、その数字を消去するときにちょっとした落とし穴があるのでメモ。まずはUIApplicationオブジェクトを取得して直接バッジを設定する場合。
(1)アプリケーションオブジェクト(UIApplication)を通じて直接、バッジ設定する場合[UIApplication sharedApplication].applicationIconBadgeNumber = badgeNumber;
この場合は、badgeNumber(NSInteger)の数字が正の数であれば、バッジ数字が表示、ゼロであればバッジアイコンは消去される。ではローカル通知を通じた場合はどうなるか。
(2)ローカル通知オブジェクト(UILocalNotification)を通じたバッジ設定の場合。ちなみにローカル通知はiOS4から利用可能NSInteger badgeNumber = 1;UILocalNotification *notification = [[UILocalNotification alloc] init];notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];//30秒後notification.alertBody = @”ローカル通知メッセージ“;notification.applicationIconBadgeNumber = badgeNumber;[[UIApplication sharedApplication] scheduleLocalNotification:notification];[notification release];
badgeNumberが正の数であれば、通知時に該当アプリのバッジにその数字が設定される。しかしゼロの場合は、直前のバッジ数字がそのまま残る。消去したい場合は、applicationBadgeNumberに負の数を設定すれば良い。ちなみに(1)のパターンのときもゼロでなく負の数を与えてもバッジは消える。 -
AndroidアプリをSDカードにインストール可能にする要点だけ
- Android 2.2 “Froyo” からandroidmanifest.xmlで設定することでSDカードへのインストール、移動が可能になった
- デフォルト設定は「端末のみ可」なので注意
- <manifest>の要素にandroid:installLocationを指定する。
- auto:通常端末内。端末容量が足りないときにSDカードへ。端末とSDカード間で移動可能
- internalOnly:端末内のみインストール可。android:installLocationを設定しないときのデフォルト値
- preferInternal:SDカードに優先的にインストール。SDカードの容量が足りないときに端末インストール。事後インストール可。
- アプリがSDカードにあるときも各種データは端末内。
<追記>
つまり、アプリ側が対応してないと、SDカードに移動することは無理ってことですね。rootedな環境とかは知らない。