ClojureからのAndroidでHello World

おひさしです。

学会発表や課題の山をくり抜けて最近やっと時間出来たことと, なんか突然ClojureAndroidを弄るインスピレーションに駆られてタイトルのようにClojureAndroidを動かせるようにしましたよ的な。 以下が参照したページです。

簡単な出来合いのHello Worldエミュレータで動かせるようにするところまで今回掲載したいと思います。 Leiningenが使える前提で話を進めていきます。ちなみに私の環境はMacの10.7です。

まず必要なもの

以下から手順です。

今までAndroidの開発を行ってきたことがない方は, 上のリンクからSDKをダウンロードしてきて適当なところに置いてください。

~/.lein/profiles.clj に以下を記述します。

{:user {:plugins [ [lein-droid "0.2.0"] ]}}

次にプロジェクトを作ります。

$ lein droid new clojuroid org.stuff.clojuroid :activity MyActivity :target-sdk 17 :app-name ClojureMeetsAndroid

生成されたプロジェクトのproject.cljを編集します。 以下のように:sdk-pathのコメントアウトを消して, パスをあなたがSDKをおいてある場所に書き換えます。

[project.clj]  
:sdk-path "/SDKまでのパス/adt-bundle-mac-x86_64-20131030/sdk/"

このままだと後ほどkeystoreがどうのこうのと怒られるので, 今のうちに書き換えましょう。 同じくproject.cljです。コメントアウトをはずしてパスを設定してください。パスはMacの場合恐らく以下になります。(Linuxだとそのままでいいんだと思います。) あと, もしかしたら絶対パスの方がいいのかもしれません。

[project.clj]
:keystore-path "/ホームディレクトリ/.android/private.keystore"

このへんでlein depsしておきましょう。プロジェクトを作成した段階で依存関係は全てproject.cljに記述されてますので便利なものです。

$ lein deps

これでclojureの環境は揃いましたね!

次にエミュレータで実行するために必要な手順を踏みます。 今までにAVD作ったことがある人は飛ばして大丈夫だと思います。 まずtarget-versionを確認するために以下を実行してみてください。

$ android list target

ズラッと色々出てきましたね。 現在のところライブラリ的に17以上じゃないと面倒が増えるようです。 そのためandroid-19の部分に着目してください。id が 5と振られていますね。

次にAVDを作りましょう。 名前はsample_avdとします。それと上記の5というidを使います。

$ android create -n sample_avd -t 5

これでAVDが作れました。 これでエミュレータの実行もできます!

$ emulator -avd sample_avd

ここでようやく, Hello Worldができます。

以下を実行してください。コンパイルから何から何までやってくれます。

$ lein droid doall

もし細かい内訳が知りたかったら, ページ上部の参考のTutorial見てください。 これでドロイド君がぐるぐるしてるClojureロゴを持っていて, その後にHello from Clojure! と出たら無事起動出来たことになります! さてさて, これでclojureAndroidアプリ作れますね。 それでどうやってインターフェース周りをプログラムするのだろう。