Category: howto

  • OSXでgitの使い方の要点だけ(インストール編)

    Android自体のソースコードもそうだけど、最近いろんなオープンソースプロジェクトがSubversionから移行していたり、githubを使う機会もなんだか増えて来たのでgitの使い方を整理してみる。当方Subversionはまあまあ使っていて、OSX Snow Leopardという環境です。まずはインストールから。

    (more…)

  • 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レイアウトの要点だけ: LinearLayoutでパーツを均等に配置したい

    AndroidのUI制作で、LinearLayoutを使って画面の横幅のちょうど2等分にしたいときがあります。このようなときは、LinearLayoutされているパーツ(ボタンとか)にたいして”android:layout_weight”プロパティを設定します。これの使い方のちょっとしたコツのメモ。

    (more…)

  • 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を始めるに有用なポインタを簡単に整理してみます。

    (more…)

  • 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な環境とかは知らない。