2009/08/29

Emacs + Ant でAndroid開発

つくづくいい時代になってきたなぁと思うのが、自分でモバイル端末のアプリをすぐ作れること。

もちろん、PalmからはじまってWindowsCE、IPhone、iアプリ(?)とかいろんな端末を触ってきてなんか作ってみたいなと試してみたけれど、どれも途中挫折。なんか、本気入れてプログラム開発して商売するのであれば開発ツールにコストかけたり、低級言語でがんばるけどもっと気軽に自分専用のちょっとしたアプリでもいいからモバイル端末で走らせたい、ってとこにはいかなかった。

が、Androidの開発はすごくやりやすい(もちろん個人的にだけど)。エディタで修正 → コンパイル指示 → 実機確認 がすぐに実行できる環境がフリーで提供されている。

そして、こんなアプリでも全世界に公開しちゃったりできる(開発者登録には$25かかるけど。)

てことで、自分がやってる方法は下記の通り。

Emacsでソースを開いてC-cC-cでコンパイルから実機インストールまで一発で実行する!

  1. Android 1.5 SDKと、JDKantをインストール。
  2. (自分の環境はWindows Vista+Cygwin+NTEmacs)
  3. ソース中に日本語を書きたいので、テンプレートを修正しておく
  4. c:/android-sdk-windows-1.5_r2/platforms/android-1.5/templates/android_rules.xml
            <javac encoding="ascii" target="1.5" debug="true" ...
                            ↓
            <javac encoding="utf-8" target="1.5" debug="true" ...
    
  5. 開発したアプリには署名をしなくてはいけないので、鍵をつくっておく[JDKに附属しているコマンド]
  6. $ keytool -genkey -keystore (キーストアファイル名) -validity 10000 -alias (キーエイリアス)
    いろいろ聞かれるので、(ストアパスワード)と(キーパスワード)を入力
    
  7. さっそく開発用のプロジェクトを作成
  8. $ android create project --package test.hello --activity HelloAndroid --target 2 --path ./HelloAndroid
    
  9. スケルトンが展開されるので、build.xmlに下記を追加
  10.     <setup />
        ...ここから...
        <property name="out-signed-package" value="${out-folder}/${ant.project.name}.apk"/>
        <target name="deploy" depends="compile">
          <signjar jar="${out-folder}/${ant.project.name}-unsigned.apk"
                   signedjar="${out-signed-package}"
                   alias="(キーエイリアス)" storepass="(ストアパスワード)"
                   keypass="(キーパスワード)" keystore="(キーストアファイル名)"
                   />
          <exec executable="${adb}" failonerror="true">
            <arg value="-d" />
            <arg value="install" />
            <arg value="-r" />
            <arg path="${out-signed-package}" />
          </exec>
        </target>
    ...ここまで...
    </project>
    
  11. Android携帯をUSBに接続
  12. 設定→アプリケーション→開発から「USBデバック」と「スリープモードにしない」をONしておく
    
  13. これで準備OK~。
  14. 下記のコマンドで実機インストールまで一発で終る
    $ ant deploy
    Buildfile: build.xml
        [setup] Project Target: Android 1.5
        [setup] API level: 3
    
    dirs:
         [echo] Creating output directories if needed...
    
    resource-src:
         [echo] Generating R.java / Manifest.java from the resources...
    
    aidl:
         [echo] Compiling aidl files into Java classes...
    
    compile:
        [javac] Compiling 2 source files to d:\dev\HelloAndroid\bin\classes
    
    deploy:
         [exec]     pkg: /data/local/tmp/HelloAndroid.apk
         [exec] Success
         [exec] 446 KB/s (13246 bytes in 0.029s)
    
    BUILD SUCCESSFUL
    Total time: 4 seconds
    
    ;; Emacs上では
    (add-hook 'java-mode-hook
              '(lambda ()
                 (define-key java-mode-map "\C-c\C-c" 'compile)
                 ))
    を.emacsに追加。
    ソースを開いてる状態でC-cC-c、コマンドは
    cd (ソースの展開ディレクトリ) && ant -emacs deploy
    を指定してEnter
    

0 コメント: