Android SDK のインストールから Clojure での Hello World! 実行まで
Mac OSX に Android SDK をインストールして、Clojure でアプリを作成し、Hello World! を Android エミュレータで表示させるまでのメモ。
Eclipse を使おうとしたら、 Mac の Java6 では動作しなかった…
※(追記)Java6 でも動作した。
Android SDK のインストール
Android SDK | Android Developers から Android SDK をダウンロードしてきて展開し、tools ディレクトリにパスを通す。
Android エミュレータの実行
ターミナルで android
コマンドを実行して Android SDK and AVD Manager を起動する。
$ android
左ペインの Available Packages を選択し、google の android レポジトリをにチェックを入れる。
インストール候補がリストアップされるので、必要なものにチェックを入れて(ここは全てにチェックをした) Install Selected をクリックする。
インストールが完了したら、指示にしたがって再起動する。
左ペインの Virtual Devices を選択し、New… で AVD (Android Virtual Device) の作成画面を表示すると Target のリストで AVD での Android のバージョンを選択できるようになっている。
AVD の名前を入れて Target を選択してから Create AVD をクリックして AVD を作成する。
AVD が作成されると、リストで AVD を選択できるできるようになるので、AVD を選択してから Start… をクリックすると エミュレータが起動する。
Android プロジェクトの作成
参考:Developing In Other IDEs | Android Developers
android
コマンドで Android プロジェクトの雛形を作成する。
(以下、プロジェクトのルートディレクトリは ~/develop/android/MyCljTestAppProject/ となる)
$ cd ~/develop/android/ $ android create project --target 7 --path ./MyCljTestAppProject --activity MyCljTestApp --package com.example.mycljtest
--target
- 対応する Android platform libray を選択する。(
android list target
コマンドで Target が一覧表示される) --name
- プロジェクト名を指定する。(この設定はオプショナル)
--path
- プロジェクトディレクトリを指定する。(ディレクトリがまだ存在しない場合は作成される)
--activity
- デフォルトのアクティビティクラス名が指定される。
--package
- プロジェクトのパッケージ名前空間が指定される。
以下のようにプロジェクトの雛形が作られる。
$ ls MyTestAppProject/ AndroidManifest.xml build.properties default.properties local.properties src/ bin/ build.xml libs/ res/
Clojure でのビルドに必要なファイルを remvee’s clojurehelloandroid at master – GitHub からダウンロードしてきて、プロジェクトのルートディレクトリに配置する。
必要なファイルは build.xml と compile.clj の2つ。(元の build.xml ファイルに上書きコピーする)
build.xml の2行目と94行目を修正する。
...省略... <project name="MyCljTestApp" default="help"> ...省略... <arg value="com.example.mycljtest.MyCljTestApp"/> ...省略...
src/com/example/mycljtest/MyCljTestApp.java を削除して、src/com/example/mycljtest/MyCljTestApp.clj を作成する。
(ns com.example.mycljtest.MyCljTestApp (:gen-class :extends android.app.Activity :exposes-methods {onCreate superOnCreate})) (defn -onCreate [this #^android.os.Bundle bundle] (.superOnCreate this bundle) (.setContentView this com.example.mycljtest.R$layout/main) (let [tv (new android.widget.TextView this)] (.setText tv (str "Hello Android from Clojure " (clojure-version) "!")) (.setContentView this tv)))
Android 用の Clojure を作成して、プロジェクトの libs ディレクトリに配置する。
$ cd ~/opt/ $ git clone git://github.com/remvee/clojure.git clojure-android $ cd clojure-android $ ant $ cp ~/opt/clojure.jar ~/develop/android/MyCljTestAppProject/libs/
ビルドする。
$ cd ~/develop/android/MyCljTestAppProject/ $ ant debug
ビルドに成功したら、エミュレータを実行した状態で、作成されたアプリを adb
コマンドでインストールする。
-s
オプションでエミュレータのシリアルナンバーを指定する。
シリアルナンバーはエミュレータのタイトルバーに表示されている。
$ android & $ adb -s emulator-5554 install ~/develop/android/MyCljTestAppProject/bin/MyCljTestApp-debug.apk 833 KB/s (669050 bytes in 0.783s) pkg: /data/local/tmp/MyCljTestApp-debug.apk Success
インストールに成功したら、エミュレータでアプリを実行してみる。