Garbage design Works 技術情報

何か、せっかく技術的な作業するんなら、記録残しといた方がいいかなぁ、なんて。

EeePC 900A+UbuntuでAndroid開発…環境構築編

2009-09-02 01:54:56 | Android
ってことで、久々の更新。

EeePCの4G-XはすっかりUbuntuマシンだが、900Aの方はWindows7専用機となっていました。 で、携帯をAndroid搭載のHT-03Aにしたので、早速開発環境を、と思い。

まずは書籍等でもよく見かける、Windows環境にEclipseで構築。構築は簡単だったんだけど…。え~っと、この環境では、使えるとはいえませんよね?NetBookでは画面狭すぎます。統合環境での開発は画面が狭くて苦しいなぁ。
ってことで、コマンドラインで開発することにするかなぁ、と考えると、やっぱりWindowsよりはLinuxでした方が良さそうな気がしてくる。

そしてまずはEeePC 4G-Xで、Ubuntu+Emacsでの開発環境構築。これがうまくいった。とりあえず、エミュレータならびに実機でテストプログラム実行OK。 ただ、4G-Xは900Aにも増して画面が狭い。800x480とかあり得ない数字。なもんで、900AでUbuntuでやるのがよいのではないかという結論に至り。

EeePC 900Aは、確か(挿し換えた)SSD側にWindows7、SDHCにUbuntu入れてたはず…って、あれ、なんかいつの間にかUbuntu居なくなってるんですが…。
さて、それではUbuntuの導入から行きますか。せっかくなんで、こうやってblogに情報を残していきます。

まずは、EeePC 900AにUbuntu 9.04のNetbookRemix(UNR)を導入します。 導入のためのイメージのダウンロード
http://www.ubuntu.com/GetUbuntu/download-netbook
ここから.imgファイルをダウンロードします。

インストール用のUSBメモリ作成は、僕はUbuntu上からやっちゃうので、とりあえずImageWriterの導入。コマンドラインから、
$ sudo apt-get install usb-imagewriter
その後、アクセサリからImageWriterを起動し、ダウンロードしたimgファイルをUSBメモリに書き込みます。

なお、WindowsでUBSメモリを作る人は、
https://help.ubuntu.com/community/Installation/FromImgFiles
をよく読んで。

で、できあがったUSBを900Aに差し込み、USBを900Aからboot。
いつもと同じパターンでインストール。僕の場合はSDHCにUbuntuはインストールするので、いつもswapを作らず(メモリ2GB搭載)、ext2で1パーティションで利用しています。
ちなみに色々利用しましたが、東芝の白いSDHCが一番さくさく動く気がします。

さて、Ubuntuインストール後に色々とやることがあります。 特に、/tmp等をtmpfsにする作業などは必須です。 ライブCDの部屋を参考に作業しています。
http://simosnet.com/livecdroom/eeepc_tips.html#tuning

で、僕はATOK X3 for Linuxを使っているので、これもインストール。
本体以外に、この辺もダウンロード。
http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042459
http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=044668
まずは、[システム設定]→[ログイン画面]から、[セキュリティ]タブを開き、自動ログイン等をOFFにします。
その後、ログアウトして、ログイン画面に戻ったところで、Ctrl-Alt-F2を押して、CUIからログイン。 あとは、以下参照。
$ export LANG=C
$ sudo touch /etc/gtk-2.0/gtk.immodules $ mkdir /tmp/atokx3
$ cd /tmp/atokx3
$ tar zxvf ~/atokx3.tar.gz
$ cd /tmp/atokx3/ATOKX3
$ sudo bash ./setupatok_deb.sh
ここまでで本体インストール完了。
$ cd /tmp/atokx3
$ tar xzf ~/atokx3up2.tar.gz
$ cd /tmp/atokx3/atokx3up2
$ sudo bash ./setupatok_up2_deb.sh
$ cd /
$ sudo tar xzf /tmp/atokx3/atokx3gtk216.tar.gz
$ sudo /opt/atokx3/sample/setting_debian4.sh
これでアップデータ導入も完了。

ここまで来たらexitでCUIログインから抜け、再度GUIでloginすればATOKが利用可能になっているはず

 このままだと、Windowの下にATOKのステイタスが表示されて鬱陶しいので、これを消します。手順の書いてあるページからツールをダウンロード。
http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=037494
ここからiiimf_status_hideを落として、あとはほぼ手順通りなんだけど、実行ファイルをsampleの下に置くってのが耐えられない。
なので僕は/opt/atokx3/binの下に置いてます。
で、自動実行のために/etc/X11/xinit/xinput.d/iiimfの最後の行に/opt/atokx3/bin/iiimf_status_hideを追加しておきます。

次にEmacsのインストールをします。TTFフォントがきれいに出るのでEmacs23をインストールします。
$ sudo apt-get install emacs-snapshot
これでその他関連4パッケージも自動インストールされるはず。

Android開発とは関係ないけどついでにThunderbirdもインストールしとこう。
$ sudo apt-get install thunderbird

あ、そうそう。emacs使うなら、ATOKの日本語モード切替でCtrl-Spaceをとられているのでこれは困ります。なんで、Ctrl-Spaceのキーバインドを解放します。
/etc/iiim/js_triggerkeys.confの中のShift+spaceをnoからyesに変更。

ここらで一度再起動しておきましょう。

あ、いかん、AndroidならJava入れておかなくちゃ。
$ sudo apt-get install sun-java6-jdk

あと、Antも必要になりますので、
$ sudo apt-get install ant
とインストール。

gitもインストールしておきます。
$ sudo apt-get install git-core

そしてここからいよいよAndroid-SDKをインストールします。

まずはSDKのダウンロード。以下のURLから、たぶん最新のSDKに飛ぶはず。
http://developer.android.com/sdk/
現在は1.5-r3になるはずです。で、Linux用のSDKをダウンロードします。

開発用のディレクトリなどの準備をします。僕は~/dev/androidを使います。
$ mkdir -p ~/dev/android
$ cd ~/dev/android
この下に先ほどのSDKのファイルを解凍します。
$ unzip android-sdk-linux_x86-1.5_r3.zip
元ファイルはファイルサイズも大きいし消しちゃってもいいかも。
$ rm android-sdk-linux_x86-1.5_r3.zip

後のこととか色々考えて、sdkというシンボリックリンク作っておきます。
$ ln -s android-sdk-linux_x86-1.5_r3 sdk
で、環境変数を登録します。
vi ~/.bashrc
----------
# Java
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

# Android
export ANDROID_SDK_HOME=~/dev/android/sdk
export PATH=$PATH:$ANDROID_SDK_HOME/tools
----------

設定を読み直します
$ source ~/.bashrc

次にEmulatorのskinで、HT-03Aを準備します。
http://wikiwiki.jp/android/?%A5%A8%A5%DF%A5%E5%A5%EC%A1%BC%A5%BF%A4%CESkin%A4%F2HT-03A%A4%CB%A4%B9%A4%EB
から、zipファイルをダウンロード。
指定のディレクトリに展開。
$ cd dev/android/sdk/platforms/android-1.5/skins/
$ unzip HT-03A
これでskinの準備はOK。

ここでHT-03Aっぽいエミュレータ起動のためのAVDを作成します。
ところがどうも、SDK1.5ではandroidコマンドとemulatorコマンドでAVDファイルを参照するポイントが違っちゃっている(バグか?)ようなので、その対応をします。
まずは保存用ディレクトリ作成
$ mkdir ~/.android/
シンボリックリンク作成
$ ln -s ~/.android ~/dev/android/sdk/.android
いよいよAVD作成です。
$ android create avd -n HT-03A -s HT-03A -t 3
これでAndroidのエミュレータ動くところまでは行ったはず。

早速起動実験です。
$ emulator @HT-03A

ちなみにエミュレータは起動に激しく時間がかかるし、もっさりしてるので、期待しすぎないこと。Android開発は実機でじゃないと厳しいわ。
さらにHT-03Aっぽくするなら、エミュレータ上の「Custom Locale」アプリか、設定のlocaleあたりかでシステムのLocaleをJaにしておきます。

ま、エミュレータはこんなところで。
次にemacs関連の設定いきます。

まずは、JDEE:Java Development Environment for Emacsのインストール。
$ sudo apt-get install jde

次に、android-modeのインストール。
$ mkdir ~/.elisp
$ cd ~/.elisp
$ git clone git://github.com/remvee/android-mode.git
ここまでで、~/.elisp/android-mode/android-mode.elというファイルができているはず。

emacsの設定は.emacsで行います。
~/.emacsに以下を追加
----------
;; android-mode
(add-to-list 'load-path "~/.elisp/android-mode")
(require 'android-mode)
(setq android-mode-sdk-dir "~/dev/android/sdk")
----------

僕は以下のようなものも加えています。
----------
;; 同名のファイルの場合ディレクトリ名を付ける
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)

;; 対応する括弧の色を変える
(show-paren-mode t)

;; バックアップファイルを作らない
(setq backup-inhibited t)

;; 終了時にオートセーブファイルを消す
(setq delete-auto-save-files t)

;; 最終行に必ず一行挿入する
(setq require-final-newline t)

;; 最終行より下に行く際に自動開業を禁止する
(setq next-line-add-newlines nil)

;; 時間を表示する
(display-time)

;; カーソルの位置表示する
(column-number-mode t)
(line-number-mode t)

;; 現在の関数名を表示
(which-function-mode 1)
----------

さて、次にUbuntuからHT-03Aの実機を認識させる設定です。
udevのrules.dにファイルを作成します。
$ sudo vi /etc/udev/rules.d/51-android.rules
----------
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
----------
$ sudo chmod a+rx /etc/udev/rules.d/51-android.rules

実機側で、設定→アプリケーション→開発の「USBデバッグ」にチェックを入れ、
これでHT-03AをUSB接続すればUbuntuから認識されるはず。

試しにHT-03Aのシェルにアクセスしてみましょう。
$ adb -d shell
(エミュレータに接続する場合は-eで)

さて、これで環境が一通り整いました。
試しに一つプロジェクトを作ってみましょう。
$ mkdir ~/dev/android/projects
$ cd ~/dev/android/projects
$ android create project --target 3 --package com.example.hello --activity HelloAndroid --path hello
これで、画面にHello world, Hello Andoridと表示するだけのコードの準備が整っています。

いざ、コンパイルとテストプログラムの起動テストです。
とりあえず、エミュレータもしくは実機のどちらかだけを接続しておきます。
その後emacsを起動し、~/dev/android/projectshello/src/com/example/hello/HelloAndroid.javaを開きます。

まずはコンパイル。
HelloAndroid.javaのバッファで、
M-x android-ant-compile
で、しばらくするとコンパイルが終了。

引き続き実行環境(実機もしくはエミュレータ)へのインストール作業
M-x android-ant-install
これでインストールが完了しています。

あとは実行環境でアプリ一覧を見ると「HelloAndroid」というアプリがあるはず。
実行してみて、Hello worldが表示されれば成功です。

さて、とりあえず、今回は環境構築まで、ということで。