« ドキュメントのサンプルコードを動かしてみる | トップページ | HelloWorldのソースコードについて考える »

2007年11月20日 (火)

LinuxにAndroidSDKをインストール

 Eclipse無しでLinuxにAndroidSDKをインストールして、コマンドラインからコードを修正したり、ビルドしたりしてみます。通常はEclipseで開発すれば何も問題無いので、そちらをおすすめします。

Linuxにrootでログインしてgoogleというユーザーを作るところから始めます。

まずは、googleグループの作成

[google@localhost android]$ groupadd -g 542 google

次に、googleユーザーの作成 -g 542 で先ほど作成したgoogleグループを指定し、 -s /bin/bash でログインシェルはbashを指定、-d /home/googleでホームディレクトリの指定

[google@localhost android]$ useradd -g 542 -u 542 google -s /bin/bash -d /home/google

googleユーザーが作成できたのでrootからgoogleユーザーにチェンジ

[google@localhost android]$ su - google

androidディレクトリの作成、androidに関する作業はこの下で行うことにします。別に何でもいいんですが…

[google@localhost android]$ mkdir android

androidディレクトリへ移動

[google@localhost android]$ cd android/

wgetでandroid_sdk_linux_m3-rc22a.zipをダウンロード。

[google@localhost android]$ wget http://dl.google.com/android/android_sdk_linux_m3-rc22a.zip
--11:22:03--  http://dl.google.com/android/android_sdk_linux_m3-rc22a.zip
           => `android_sdk_linux_m3-rc22a.zip'
dl.google.com をDNSに問いあわせています... 72.14.203.91
dl.google.com|72.14.203.91|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 55,322,693 (53M) [application/zip]

100%[===========================================================================================================================>] 55,322,693   832.51K/s    ETA 00:00

11:23:13 (782.97 KB/s) - `android_sdk_linux_m3-rc22a.zip' を保存しました [55322693/55322693]

落としたファイルは解凍する前にMD5のチェックをします。これはダウンロードしたファイルが改ざんされていないかどうか確認するためのものです。

[google@localhost android]$ md5sum android_sdk_linux_m3-rc22a.zip
84b3455de5cdfd841a172c13d24c382e  android_sdk_linux_m3-rc22a.zip

md5sumで対象のファイルを指定すると何やら「84b3455de5cdfd841a172c13d24c382e」と文字が出ます。この文字をダウンロード元のMD5 Checksumと比べます。
目視で比べて大丈夫そうならおkでいいかもしれませんが、厳密にやりたい方はコピペでエディターに貼り付けて比較するなり、diff使うなり色々あると思います。私は面倒なので目視でいきます。

[google@localhost android]$ md5sum android_sdk_linux_m3-rc22a.zip > check.txt
[google@localhost android]$ more check.txt
84b3455de5cdfd841a172c13d24c382e  android_sdk_linux_m3-rc22a.zip
[google@localhost android]$ echo 84b3455de5cdfd841a172c13d24c382e >> check.txt
[google@localhost android]$ more check.txt
84b3455de5cdfd841a172c13d24c382e  android_sdk_linux_m3-rc22a.zip
84b3455de5cdfd841a172c13d24c382e

md5sumの結果をファイルに入れてみたりとか

問題なさそうであれば解凍します。

[google@localhost android]$ unzip android_sdk_linux_m3-rc22a.zip

ずらーっと何か画面に表示されると思います。
次に必ず必要と言うわけではありませんが、

[google@localhost android]$ ln -s android_sdk_linux_m3-rc22a android_sdk

android_sdk_linux_m3-rc22aは長ったらしいので、android_sdkという名前でシンボリックリンク貼っておきます。

[google@localhost android]$ ls -lt
lrwxrwxrwx  1 google google       26 11月 20 11:26 android_sdk -> android_sdk_linux_m3-rc22a

cdで移動する時など、
cd android
で移動できます。

次にprojectsというディレクトリを作成します。この中にandroidのプロジェクトを作成していきます。

[google@localhost android]$ mkdir projects

projectディレクトリに移動
[google@localhost android]$ cd projects/

projectsディレクトリの中に更にHelloAndroidディレクトリを作成し、移動します。

[google@localhost projects]$ mkdir HelloAndroid
[google@localhost projects]$ cd HelloAndroid/

いよいよandroid_sdk/tools/のactivityCreator.pyを使ってプロジェクトを作成します。Eclipseの場合、プロジェクトを作成した段階で出来るファイルをこのバッチプログラムを使って作成します。
activityCreator.py com.google.android.samples.HelloAndroid
という風に引数を指定して実行します。

[google@localhost HelloAndroid]$ ../../android_sdk/tools/activityCreator.py com.google.android.samples.HelloAndroid
package: com.google.android.samples
out_dir: /home/google/android/projects/HelloAndroid
activity_name: HelloAndroid
Created directory /home/google/android/projects/HelloAndroid/src/com/google/android/samples
Added file /home/google/android/projects/HelloAndroid/src/com/google/android/samples/HelloAndroid.java
Created directory /home/google/android/projects/HelloAndroid/bin
Created directory /home/google/android/projects/HelloAndroid/res/values
Added file /home/google/android/projects/HelloAndroid/res/values/strings.xml
Created directory /home/google/android/projects/HelloAndroid/res/layout
Added file /home/google/android/projects/HelloAndroid/res/layout/main.xml
Added file /home/google/android/projects/HelloAndroid/AndroidManifest.xml
Added file /home/google/android/projects/HelloAndroid/build.xml

ここで必ず必要ではないですが、通常のコマンドと同じように実行できるようにactivityCreator.pyのあるtoolディレクトリへパスを通しておきます。

[google@localhost ~]$ vi .bashrc

[google@localhost ~]$ more .bashrc
# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
#PAHT
export PATH=$PATH:/home/google/android/android_sdk/tools

.bashrcをエディターで開いて
export PATH=$PATH:/home/google/android/android_sdk/tools
を最後に追記すればいいです。

.bashrcの変更をすぐに反映させるため以下のコマンドを打ちます。

[google@localhost ~]$ source .bashrc

コマンドを打たなくてもログインし直したり、OSを再起動すると変更が常に有効になります。
以上の変更がうまくいったかどうか試しにHelloAndroidを作成したのと同様にHelloAndroid2を作成してみます。

[google@localhost android]$ cd android/projects/
[google@localhost android]$ mkdir HelloAndroid2
[google@localhost android]$ cd HelloAndroid2/

[google@localhost HelloAndroid2]$ activityCreator.py  com.google.android.samples.HelloAndroid2
package: com.google.android.samples
out_dir: /home/google/android/projects/HelloAndroid2
activity_name: HelloAndroid2
Created directory /home/google/android/projects/HelloAndroid2/src/com/google/android/samples
Added file /home/google/android/projects/HelloAndroid2/src/com/google/android/samples/HelloAndroid2.java
Created directory /home/google/android/projects/HelloAndroid2/bin
Created directory /home/google/android/projects/HelloAndroid2/res/values
Added file /home/google/android/projects/HelloAndroid2/res/values/strings.xml
Created directory /home/google/android/projects/HelloAndroid2/res/layout
Added file /home/google/android/projects/HelloAndroid2/res/layout/main.xml
Added file /home/google/android/projects/HelloAndroid2/AndroidManifest.xml
Added file /home/google/android/projects/HelloAndroid2/build.xml



[google@localhost HelloAndroid2]$ pwd
/home/google/android/projects/HelloAndroid2
[google@localhost HelloAndroid2]$ ls
AndroidManifest.xml  bin  build.xml  res  src

以上でプロジェクトの作成は上手く行きました。
次にHelloAndroidのソースを変更してエミュレーターの画面に「Hello,Android」と表示できるようにします。

[google@localhost HelloAndroid]$ more src/com/google/android/samples/HelloAndroid.java

package com.google.android.samples;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);
    }
}

以上のようにソースを編集してください。Eclipseで編集した時と同じです。

 ソースの編集をするとEclipseでは、Eclipseが勝手に動いてコンパイルしたり色々やってくれたわけですが、コマンドラインからは自分でコンパイルして色々調整しないといけません。
ただ、それだと面倒なのでantを使えば一発でコンパイルから何からやってくれます。

 今回はantが入っていなかったのでダウンロードしてきてantが使えるようにしました。
まずは、antをダウンロードします。android_sdk_linux_m3-rc22a.zipをダウンロードしてmd5sumをチェック、解凍の流れと同じです。

[google@localhost ~]$ cd

/home/googleに移動、ここにantをインストールします。

[google@localhost ~]$ wget http://ftp.kddilabs.jp/infosystems/apache/ant/binaries/apache-ant-1.7.0-bin.tar.gz
--12:16:22--  http://ftp.kddilabs.jp/infosystems/apache/ant/binaries/apache-ant-1.7.0-bin.tar.gz
           => `apache-ant-1.7.0-bin.tar.gz'
ftp.kddilabs.jp をDNSに問いあわせています... 192.26.91.193, 2001:200:601:10:206:5bff:fef0:466c
ftp.kddilabs.jp|192.26.91.193|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 8,958,777 (8.5M) [application/x-gzip]

100%[===========================================================================================================================>] 8,958,777    825.42K/s    ETA 00:00

12:16:34 (752.44 KB/s) - `apache-ant-1.7.0-bin.tar.gz' を保存しました [8958777/8958777]

MD5のチェック

[google@localhost ~]$ md5sum apache-ant-1.7.0-bin.tar.gz
d721b0add40355d7049ec694b91eb332  apache-ant-1.7.0-bin.tar.gz
[google@localhost ~]$ echo d721b0add40355d7049ec694b91eb332
d721b0add40355d7049ec694b91eb332

解凍します。

[google@localhost ~]$ tar zxvf apache-ant-1.7.0-bin.tar.gz

またもやシンボリックリンク貼っておきます。

[google@localhost ~]$ ln -s apache-ant-1.7.0 ant
[google@localhost ~]$ ls -lt
合計 8776
lrwxrwxrwx  1 google google      16 11月 20 12:18 ant -> apache-ant-1.7.0

そして、またもやパスに追加しておきます。

[google@localhost ~]$ more .bashrc
# .bashrc

# User specific aliases and functions

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
#PAHT
export PATH=$PATH:/home/google/android/android_sdk/tools
export ANT_HOME=$ANT_HOME:/home/google/ant
export PATH=$PATH:$ANT_HOME/bin

パスに追加したのを有効にします。

[google@localhost ~]$ source .bashrc

antのインストールされている場所の確認

[google@localhost ~]$ which ant
~/ant/bin/ant

ついでにantのバージョンの確認。

[google@localhost ~]$ ant -version
Apache Ant version 1.7.0 compiled on December 13 2006

ここまで、出来ればantインストール完了。この変でつまずいたらパスが通ってないとかそういう感じです。

先ほど作成したHelloAndroidをビルド(コンパイルとか色々)します。build.xmlのあるディレクトリでantと打つだけです。

[google@localhost ~]$ cd android/projects/HelloAndroid
[google@localhost HelloAndroid]$ ls
AndroidManifest.xml  bin  build.xml  res  src
[google@localhost HelloAndroid]$
[google@localhost HelloAndroid]$ ant
Buildfile: build.xml

dirs:
    [mkdir] Created dir: /home/google/android/projects/HelloAndroid/bin/classes

resource-src:
     [echo] Generating R.java...

aidl:

compile:
    [javac] Compiling 2 source files to /home/google/android/projects/HelloAndroid/bin/classes

dex:

package-res:

package-res-no-assets:
     [echo] Packaging resources...

package-dex:
     [echo] Packaging dex...

package:

BUILD SUCCESSFUL
Total time: 7 seconds

無事何かできました。

binの下に出来る.apkという拡張子付きのファイルが作成したアプリらしいです。こいつをエミュレーターなり、実機なりに入れれば動くらしいです。

[google@localhost HelloAndroid]$ ls bin/
HelloAndroid.apk  classes  classes.dex

.apkのついたファイルのエミュレーターでの実行方法は、こちらが参考になります。

試しに私も以下のような感じで,LinuxからHelloAndroid.apkを持ってきて、ウィンドウズ上で試してみました。

cd C:\tmp
start emulator

C:\tmp>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 98FF-5459 です

C:\tmp のディレクトリ

2007/11/20  12:33    <DIR>          .
2007/11/20  12:33    <DIR>          ..
2007/11/20  12:27             4,386 HelloAndroid.apk
2007/10/16  18:03             3,638 index.html
2007/11/20  12:34                29 slirp.log
2007/10/22  12:45                 0 UIDbgMon.out
2007/06/27  17:06    <DIR>          新しいフォルダ
               4 個のファイル               8,053 バイト
               3 個のディレクトリ  17,573,523,456 バイトの空き領域


C:\tmp>adb install HelloAndroid.apk
68 KB/s (0 bytes in 4386.000s)

C:\tmp>

なんかadb install HelloAndroid.apkでうまくファイルがエミュレーターに渡らず上手くいきませんでした。
このへんと同じ問題な気もするけど、とりあえず今日の所はここまで。そのうち解決します。

|

« ドキュメントのサンプルコードを動かしてみる | トップページ | HelloWorldのソースコードについて考える »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/478154/9027781

この記事へのトラックバック一覧です: LinuxにAndroidSDKをインストール:

« ドキュメントのサンプルコードを動かしてみる | トップページ | HelloWorldのソースコードについて考える »