2009/05/16

Android アプリをCUIで開発してみる

以下は単に個人的な備忘録です。

私が試行錯誤して軌跡をメモした程度の内容であり、ものすごくテキトーです。
間違いだらけかも。

JAVA は(も?)よく分からないです。


工人舎のミニノート(SC3KX06AS)のあまりパワーのない環境でも快適に Android アプリの開発をしようと思いたち、CUI の開発環境を整えることにしました。

ちなみに、次のスクリーンショットのような感じで開発したいです。
Portable Ubuntu for Windows(以下Portable Ubuntuと表記)で GNOME Terminal、GNU ScreenとVI(VIM)を使っています。


基本的にはDeveloping In Other IDEs | Android Developers [developer.android.com]を参照したつもりなのですが、よく分からないことだらけです。

工人舎のミニノート(SC3KX06AS)のWindows XP にインストールしている Portable Ubuntu をメインにしたいと考えていますが、私の環境の Portable Ubuntu では現時点で次のような問題があります。
  • USBに接続しているAndroid Dev Phone 1(以下ADP1と記載)を使用できない
    そのため、adb install などは使えない

そのため、Windows のコマンドプロンプトでもビルドできる環境を整えたいと思います。

次のことはなんとかできました。
  • Portable Ubuntu のシェルで Android プロジェクトをビルド

  • Windows XP のコマンドプロンプトで Android プロジェクトをビルド

  • Windows XP のコマンドプロンプトで adb install によって ADP1にアプリをインストール

今のところ次の点がよく分かりません。
  • Windows と Linux(Portable Ubuntu)間でプロジェクトを移動する場合、プロジェクトのアップデートが必要?
    下記の「4.」と「5.」

  • プロジェクトのアップデート後に build.xmlの project nameの修正は必要?
    下記「5.」


1. Portable Ubuntu から Windows の D:\ ディスクを読めるようにする


まずはWindowsシステム内の設定です。
C:\xxx\Portable_Ubuntu\config\portable_ubuntu.conf の元からあった cofs1=c:\ の下に、次のように cofs2 で始まる行を追加しました。

cofs1=c:\ #Para tener acceso a la unidad C:
cofs2=d:\


次は Portable Ubuntu システム内の設定です。
Portable Ubuntu にログイン後、/etc/fstab のcofs1で始まる行の下に cofs2 で始まる行を追加しました。
cofs1          /mnt/C           cofs    user,dmask=0777,fmask=0666 0       0
cofs2 /mnt/D cofs user,dmask=0777,fmask=0666 0 0

私の記憶が確かであれば、これで Windows の D:\ ディスクを Portable Ubuntu からは /mnt/D で読めるようになったハズです。


2. Windows に CUI で Android アプリ開発を行なえる環境を作る

Windows 用 Android SDK はインストール済みであるとします。

2-1. JDK のインストール
Windows に JDK をインストールして、環境変数 PATH に以下の値を加え、またJAVA_HOMEを設定する。
・PATH に C:\Program Files\Java\jdk1.6.0_13\bin を追加
・JAVA_HOME に C:\Program Files\Java\jdk1.6.0_13 を設定

2-2. Ant のインストール
Apache Ant - Binary Distributions [ant.apache.org] から apache-ant-1.7.1-bin.zip をダウンロードして D:\xxx\bin 以下に解凍し、できたディレクトリを apache-ant に名前を変更して D:\xxx\bin\apache-ant としました。

また、Windows の環境変数 PATH に以下の値を加えました。
・PATH に D:\xxx\bin\apache-ant\bin を追加

2-3. Windows のコマンドプロンプトから Android プロジェクトを作成する
以下の例では D:\xxx\workspace\HelloTabWidget_windows以下にAndroid プロジェクトが作成されます。
C:\Documents and Settings\xxx>d:
D:\>cd xxx\workspace
D:\xxx\workspace>android create project
--target 2
--activity HelloTabWidget
--package com.example.hellotabwidget
--path HelloTabWidget_windows
(実際は一行)

(省略)


HelloTabWidget_windows がディレクトリができたことを確認します。
D:\xxx\workspace>dir HelloTabWidget_windows
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です

D:\xxx\workspace\HelloTabWidget_windows のディレクトリ

2009/05/16 02:51 <DIR> .
2009/05/16 02:51 <DIR> ..
2009/05/16 02:51 636 AndroidManifest.xml
2009/05/16 02:51 <DIR> bin
2009/05/16 02:51 440 build.properties
2009/05/16 02:51 2,734 build.xml
2009/05/16 02:51 364 default.properties
2009/05/16 02:51 <DIR> gen
2009/05/16 02:51 <DIR> libs
2009/05/16 02:51 428 local.properties
2009/05/16 02:51 <DIR> res
2009/05/16 02:51 <DIR> src
2009/05/16 02:51 <DIR> tests
5 個のファイル 4,602 バイト
8 個のディレクトリ 15,334,060,032 バイトの空き領域


2-4. Windows のコマンドプロンプトから Android プロジェクトをビルドする
D:\xxx\workspace>cd HelloTabWidget_windows
D:\xxx\workspace\HelloTabWidget_windows>ant debug

(省略)

BUILD SUCCESSFUL
Total time: 20 seconds

bin\以下に apkファイルができたことを確認します。
D:\xxx\workspace\HelloTabWidget_windows>dir bin
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です

D:\xxx\workspace\HelloTabWidget_windows\bin のディレクトリ

2009/05/16 03:09 <DIR> .
2009/05/16 03:09 <DIR> ..
2009/05/16 03:08 <DIR> classes
2009/05/16 03:09 1,740 classes.dex
2009/05/16 03:09 4,409 HelloTabWidget-debug.apk
2009/05/16 03:09 1,924 HelloTabWidget.ap_
3 個のファイル 8,073 バイト
3 個のディレクトリ 15,334,023,168 バイトの空き領域


2-5. Windows での adb devices の実行結果
USB 接続している Android Dev Phone 1 が見えます。
D:\xxx\workspace\HelloTabWidget_windows>adb devices
List of devices attached
HT845GZ59637 device

D:\xxx\workspace\HelloTabWidget_windows>


3. Portable Ubuntu に CUI で Android アプリ開発を行なえる環境を作る

Antはapt-get installでインストールしました。

3-1. Portable Ubuntu に Android SDK をインストールする

Android 1.5 SDK, Release 1 | Android Developers [developer.android.com]から android-sdk-linux_x86-1.5_r1.zip を入手して Portable Ubuntu システム内の $HOME/bin 以下に解凍し、できたフォルダへのリンクを $HOME/bin/android-sdkとして作成しました。

$HOME/bin 以下は次のようになりました。
$ ls -l $HOME/bin|grep android
lrwxrwxrwx 1 pubuntu pubuntu 28 2009-05-15 17:24 android-sdk -> android-sdk-linux_x86-1.5_r1
drwxrwx--- 6 pubuntu pubuntu 4096 2009-04-22 13:14 android-sdk-linux_x86-1.5_r1


3-2. Portable Ubuntu に JDK をインストールする
次にこちらと同様の手順でJDKをインストールします。

$HOME/bin 以下は次のようになりした。
$ ls -l $HOME/bin|grep jdk
lrwxrwxrwx 1 pubuntu pubuntu 11 2009-05-15 18:10 jdk -> jdk1.6.0_13
drwxr-xr-x 10 pubuntu pubuntu 4096 2009-05-15 18:09 jdk1.6.0_13

以下の環境変数を追加し、$HOME/.bashrcにも記述を追加します。
$ export PATH=$HOME/bin/android-sdk/tools:$PATH
$ export JAVA_HOME=$HOME/bin/jdk
$ export PATH=$HOME/bin/jdk/bin:$PATH
$ tail -n2 .bashrc
export PATH=$HOME/bin/android-sdk/tools:$HOME/bin/jdk/bin:$PATH
export JAVA_HOME=$HOME/bin/jdk


3-3. Portable Ubuntu のシェルから Android プロジェクトを作成する
以下の例では /mnt/D/xxx/workspace/HelloTabWidget_pubuntu 以下に Android プロジェクトが作成されます。

このディレクトリはWindows 側から見ると D:\xxx\workspace\HelloTabWidget_pubuntu以下となります。
$ cd /mnt/D/xxx/workspace/
$ android create project \
> --target 2 \
> --activity HelloTabWidget \
> --package com.example.hellotabwidget \
> --path HelloTabWidget_pubuntu

(省略)


HelloTabWidget_pubuntuができたことを確認します。
$ ls HelloTabWidget_pubuntu/
AndroidManifest.xml build.xml libs src
bin default.properties local.properties tests
build.properties gen res


3-4. Portable Ubuntu のシェルから Android プロジェクトをビルドする
$ cd HelloTabWidget_pubuntu/
$ ant debug

(省略)

BUILD SUCCESSFUL
Total time: 10 seconds

bin/以下にapkファイルができたことを確認します。
$ ls -l bin
total 5
-rw-rw-rw- 1 root root 4410 2009-05-16 03:16 HelloTabWidget-debug.apk
-rw-rw-rw- 1 root root 1924 2009-05-16 03:15 HelloTabWidget.ap_
drwxrwxrwx 1 root root 0 2009-05-16 03:15 classes
-rw-rw-rw- 1 root root 1740 2009-05-16 03:15 classes.dex


3-5. Portable Ubuntu での adb devices の実行結果

接続している Android Dev Phone 1 は見えません。
$ adb devices
List of devices attached

$

4. WindowsとPortable Ubuntuでお互いのプロジェクトを交換してそのままビルドする
どちらもエラーになります。

例えばWindows で作成したプロジェクトの場合、local.properties に
sdk-location=C:\\xxx\\bin\\android-sdk
とあるので、このあたりをいじらないとダメなのかな?

Eclipse で作成したプロジェクトだと Windows <-> Linux でいけてるんじゃないかと思っているのですが、後で確認しよう。
それとも自動でandroid update projectと同様の処理が行われるのかな?


4-1. Portable Ubuntu で作成したプロジェクトをWindowsのコマンドプロンプトでビルドする

D:\xxx\workspace\HelloTabWidget_windows>cd ..\HelloTabWidget_pubuntu
D:\xxx\workspace\HelloTabWidget_pubuntu>ant debug
Buildfile: build.xml

(省略)

BUILD FAILED
D:\xxx\workspace\HelloTabWidget_pubuntu\build.xml:49: taskdef class com.android.ant.SetupTask cannot be found

Total time: 0 seconds


4-2. Windows で作成したプロジェクトをPortable Ubuntu のシェルでビルドする
$ cd ../HelloTabWidget_windows
$ ant debug
Buildfile: build.xml

(省略)

BUILD FAILED
/mnt/D/xxx/workspace/HelloTabWidget_windows/build.xml:49: taskdef class com.android.ant.SetupTask cannot be found
Total time: 1 second


5. WindowsとPortable Ubuntuでお互いのプロジェクトを交換した際にはプロジェクトをアップデートしてからビルドする


5-1. Portable Ubuntu で作成したプロジェクトをWindowsのコマンドプロンプトでアップデートしてからビルドする
D:\xxx\workspace\HelloTabWidget_pubuntu>move build.xml build.xml.bak
D:\xxx\workspace\HelloTabWidget_pubuntu>android update project --target 2 --path %CD%
Updated default.properties
Updated local.properties
Added file D:\xxx\workspace\HelloTabWidget_pubuntu\build.xml

ここで build.xml の以下の箇所を修正する。
<project name=".HelloTabWidget" default="help">
-> <project name="HelloTabWidget" default="help">

これをしないと、bin/.HelloTabWidget-debug.apk になってしまいます。
--path の指定が悪いのでしょうか?
それとも仕様?

D:\xxx\workspace\HelloTabWidget_pubuntu>del bin
D:\xxx\workspace\HelloTabWidget_pubuntu\bin\*、よろしいですか (Y/N)? y

D:\xxx\workspace\HelloTabWidget_pubuntu>ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

BUILD SUCCESSFUL
Total time: 6 seconds
D:\xxx\workspace\HelloTabWidget_pubuntu>dir bin
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は 567E-9060 です
D:\xxx\workspace\HelloTabWidget_pubuntu\bin のディレクトリ
2009/05/16 04:23 <DIR> .
2009/05/16 04:23 <DIR> ..
2009/05/16 03:15 <DIR> classes
2009/05/16 04:23 1,740 classes.dex
2009/05/16 04:23 4,409 HelloTabWidget-debug.apk
2009/05/16 04:23 1,924 HelloTabWidget.ap_
3 個のファイル 8,073 バイト
3 個のディレクトリ 15,333,715,968 バイトの空き領域


5-2. Windowsので作成したプロジェクトをPortable Ubuntu アップデートしてからビルドする
5-1 と同じように進めます。

$ mv build.xml build.xml.bak
$ android update project \
> --target 2 \
> --path $PWD
Updated default.properties
Updated local.properties
Added file /home/pubuntu/D/xxx/workspace/HelloTabWidget_windows/build.xml


ここで build.xml の以下の箇所を修正する。
<project name=".HelloTabWidget" default="help">
-> <project name="HelloTabWidget" default="help">
…これってどうするのが正しいのでしょうか?

$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

BUILD SUCCESSFUL
Total time: 6 seconds


bin/以下にapkファイルができたことを確認します。

$ ls -lrt bin/
total 5
drwxrwxrwx 1 root root 0 2009-05-16 03:08 classes
-rw-rw-rw- 1 root root 2604 2009-05-16 07:47 classes.dex
-rw-rw-rw- 1 root root 1924 2009-05-16 07:47 HelloTabWidget.ap_
-rw-rw-rw- 1 root root 4636 2009-05-16 07:47 HelloTabWidget-debug.apk


0 件のコメント: