私用終了

したので debianthinkpadandroid な開発環境構築する事に。今も hackathon してるはずなんですが追い付けるかどうか (多分無理)。
まず、Eclipse の取得とインストールなあたりを見つつ環境確認。

$ dpkg --get-selections|grep sun-java
sun-java5-bin                                   install
sun-java5-demo                                  install
sun-java5-jdk                                   install
sun-java5-jre               			install
$

を、きちんと入っとるじゃん。apt-cache search したら java6 もナニでしたが、ここではスルー。要件としては
o eclipse は 3.4
o git な plugin も入れとく
o androidSDK
あたりかと。そりゃええんですが、java --version すると以下。

$ java --version
java version "1.5.0"
gij (GNU libgcj) version 4.3.2

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$

上記ドキュメントによれば update-alternative せえ、とある。

# update-alternatives --config java

There are 4 alternatives which provide `java'.

  Selection    Alternative
-----------------------------------------------
          1    /usr/bin/gij-wrapper-4.1
          2    /usr/bin/gij-4.3
*+        3    /usr/lib/jvm/java-gcj/jre/bin/java
          4    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

Press enter to keep the default[*], or type selection number: 

ひえー。4 つもある。これは 4 をタイプすれば良いのかな。で、確認。

# update-alternatives --config java

There are 4 alternatives which provide `java'.

  Selection    Alternative
-----------------------------------------------
          1    /usr/bin/gij-wrapper-4.1
          2    /usr/bin/gij-4.3
 +        3    /usr/lib/jvm/java-gcj/jre/bin/java
*         4    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

Press enter to keep the default[*], or type selection number: 
#

これで準備 OK らしい。

$ java -version
java version "1.5.0_17"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)
Java HotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode, sharing)
$

しかし sun の java も apt-get で取れる時代になったか。
# 取れる、ってか知らんうちに入ってるのも微妙

eclipse

for java Developer の Linux 32bits 向けがココから download 可能。85MB が約 3 分ッスか。ええ時代になったものですな。
そういえば昨日は mac が何台かいたみたいですが、Linux 使ってる通は居なかった模様。vista とか初めて見た。
で、download が終わったら展開して起動。あら、Android SDK 入れれ、って書いてありますね。http://developer.android.com/sdk/ からオトせ、との事。これまた 157MB が約 3 分との事。その間に eclipse 側で Android Development Tools 入れる。

  • Help -> Software Updates 選択して
  • Available Software から Add Site クリック
  • https://dl-ssl.google.com/android/eclipse って入力して OK
  • Developer Tools チェックして Install
  • 依存とかをナニして Next
  • Lisence に agree して Finish

あと、Android SDK が download できたので解凍。とりあえず PATH には入れてない状態。とりあえず 仮想デバイス作って emulator 動かしてみます。
まずは仮想デバイスの作成ですが、テキスト通りでナニ。

$ android-sdk-linux_x86-1.5_r2/tools/android create avd --name sdk1_5 --target 3 --sdcard 128M
Created AVD 'sdk1_5' based on Google APIs (Google Inc.)
$

で、emulator 起動。

$ android-sdk-linux_x86-1.5_r2/tools/emulator @sdk1_5
emulator: emulator window was out of view and was recentred

watch cat /proc/loadavg しながら確認してるんですが、1 (1.2* くらい) は越えてますな。でもまだ起動しない。起動時間チェックしときゃ良かった。
を、起動した。

そういえば

git な plugin 入れるんだったな。上記と同様の設定をして Add Site から http://www.jgit.org/update-site を入れて OK したらいくつか出てきた。

  • Integration Build
  • Maintenance Build
  • Nightly Build
  • Release Build
  • Stable build
  • Tentative Build

何故か Stable だけ build が小文字。stable と release はどっちが良いのだろうか、と良いつつ小文字にホレたので stable にする事に (何
あとは github にリポジトリ作って試してみれば良いのかな。とりあえず HelloAndroid 作って色々試す事に。

HelloAndroid

昨日もヤりましたが再度。

  • File -> New -> Project から Android Project 選択して Next
  • New Android Project にて
    • Project name は HelloAndroid
    • あら? Build Target に何も出てないな

問題発生。Build Target が選べないので次に行けないな。あ、設定漏れがありますな。

  • Window -> Preferences 選択して Android をクリック
  • 上記で解凍した Android SDK なディレクトリ選択して OK クリック

これで Build Target が出てきました。以下に続きを

    • BuildTarget は Google APIs をチェック
    • Application name は HelloAndroid
    • Package name は適当に (を
    • Create Activity は HelloAndroidActivity
    • Min SDK Version は 3 で Finish

console にエラーが出ているな。曰く

[2009-06-20 16:07:33 - HelloAndroid] no classfiles specified
[2009-06-20 16:07:33 - HelloAndroid] Conversion to Dalvik format failed with error 1

との事。ググッてみると http://fukutive.blog21.fc2.com/blog-entry-277.html によると微妙な問題な模様。を、http://blog.altemasoft.com/article/29827399.html によれば Project を clean すれば良い、とありますな。ええと、

  • Project が選択されてる状態で Project -> clean を選択
  • clean projects selected below をチェックして OK クリック

で、Run As したら動いたな。google 先生今日もありがとう。

昨日のおさらい

ええと、プロジェクトは以下な状態になってます。workspace 配下にて以下。

$ find HelloAndroid
HelloAndroid/
HelloAndroid/.settings
HelloAndroid/.settings/org.eclipse.jdt.core.prefs
HelloAndroid/.project
HelloAndroid/gen
HelloAndroid/gen/com
HelloAndroid/gen/com/railsplayground
HelloAndroid/gen/com/railsplayground/playthings
HelloAndroid/gen/com/railsplayground/playthings/helloandroid
HelloAndroid/gen/com/railsplayground/playthings/helloandroid/R.java
HelloAndroid/.classpath
HelloAndroid/bin
HelloAndroid/bin/com
HelloAndroid/bin/com/railsplayground
HelloAndroid/bin/com/railsplayground/playthings
HelloAndroid/bin/com/railsplayground/playthings/helloandroid
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/R$drawable.class
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/R.class
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.class
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/R$attr.class
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/R$string.class
HelloAndroid/bin/com/railsplayground/playthings/helloandroid/R$layout.class
HelloAndroid/bin/HelloAndroid.apk
HelloAndroid/bin/classes.dex
HelloAndroid/bin/resources.ap_
HelloAndroid/AndroidManifest.xml
HelloAndroid/default.properties
HelloAndroid/res
HelloAndroid/res/layout
HelloAndroid/res/layout/main.xml
HelloAndroid/res/values
HelloAndroid/res/values/strings.xml
HelloAndroid/res/drawable
HelloAndroid/res/drawable/icon.png
HelloAndroid/src
HelloAndroid/src/com
HelloAndroid/src/com/railsplayground
HelloAndroid/src/com/railsplayground/playthings
HelloAndroid/src/com/railsplayground/playthings/helloandroid
HelloAndroid/src/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.java
HelloAndroid/assets
$

まず、HelloAndroidActivity.java から。パケジ名が微妙ですがご容赦願います。

package com.railsplayground.playthings.helloandroid;

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

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

昨日の話では

  • エントリポイントは onCreate() メソド
  • 引数の savedInstanceState は Bundle クラスの変数
    • Activity が裏に回るとプロセスとしては死ぬ模様。死んだ時の状態を Bundle 型のオブジェクトの退避させるとの事。これ、以前 Java Kuche で話を聞いた時に微妙に気になってた部分で、どこまで積んだら overflow するのか、と思ってたんですが退避して死亡するのであればスタック的にもやや余裕で使えるな、と
  • setContentView() メソドに渡しているのは gen 配下にある R.java で定義されている変数
    • R.java は res 配下にあるリソース定義を java で参照可能にしている模様 (うろ覚え
    • リソース定義は XML ですが、GUI なプロパティエディタも付いている

な事を言われていた記憶がうっすらある。そういえば cache を SQLite で管理してます、みたいな事を言われてましたな。

ボタン追加を盛り込み。ってその前に git に push してみるか。

  • プロジェクト選択して右クリック -> Team -> share project
  • Git があるので選択して Next
  • Git Repository を選択、とある

これは GitHub でリポジトリを作って clone しないと駄目なのかな。ローカルなリポジトリに対する commit はできるけど、push は微妙な模様。
とりあえず GitHub でプロジェクト作成。基本全部 add せんと駄目かなぁ。あ、bin 配下は add したくない。ので以下の標準出力を git add に渡すか。

$ find -path 'bin/' -prune -o -print

あと、GitHub 君に教えてもらった手順が以下。

git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@github.com:yamanetoshi/HelloAndroid.git
git push origin master

touch は略す方向。

$ git init
Initialized empty Git repository in /home/rms/eclipse_workspace/HelloAndroid/.git/
$ git add `find -path 'bin/' -prune -o -print`
$ git commit -m 'first commit'
Created initial commit 2ad8f87: first commit
 19 files changed, 125 insertions(+), 0 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .project
 create mode 100644 .settings/org.eclipse.jdt.core.prefs
 create mode 100644 AndroidManifest.xml
 create mode 100644 bin/HelloAndroid.apk
 create mode 100644 bin/classes.dex
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$attr.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$drawable.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$layout.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$string.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R.class
 create mode 100644 bin/resources.ap_
 create mode 100644 default.properties
 create mode 100644 gen/com/railsplayground/playthings/helloandroid/R.java
 create mode 100644 res/drawable/icon.png
 create mode 100644 res/layout/main.xml
 create mode 100644 res/values/strings.xml
 create mode 100644 src/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.java
$ 

あら、bin 配下が add されとるな。find がダウトだった模様。時間が無い。git init したらきれいにならんかな。.git 削除して再度 git init するか。

$ rm -rf .git
$ git init
Initialized empty Git repository in /home/rms/eclipse_workspace/HelloAndroid/.git/
$ git add `find -path './bin/' -prune -o -print`
$ git commit -m 'first commit'
Created initial commit 867fce9: first commit
 19 files changed, 125 insertions(+), 0 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .project
 create mode 100644 .settings/org.eclipse.jdt.core.prefs
 create mode 100644 AndroidManifest.xml
 create mode 100644 bin/HelloAndroid.apk
 create mode 100644 bin/classes.dex
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$attr.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$drawable.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$layout.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$string.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R.class
 create mode 100644 bin/resources.ap_
 create mode 100644 default.properties
 create mode 100644 gen/com/railsplayground/playthings/helloandroid/R.java
 create mode 100644 res/drawable/icon.png
 create mode 100644 res/layout/main.xml
 create mode 100644 res/values/strings.xml
 create mode 100644 src/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.java

げ。まだあるな。。これが正解か。

$ find . -path './bin/*' -prune -o -print

再度 .git 削除してリトライ。

$ rm -rf .git
$ git init
nitialized empty Git repository in /home/rms/eclipse_workspace/HelloAndroid/.git/
$ git add `find . -path './bin/*' -prune -o -print`
$ git add `find . -path './bin/*' -prune -o -print
> `
rms@debian:~/eclipse_workspace/HelloAndroid$ git commit -m 'first commit'
Created initial commit 69478a5: first commit
 19 files changed, 125 insertions(+), 0 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .project
 create mode 100644 .settings/org.eclipse.jdt.core.prefs
 create mode 100644 AndroidManifest.xml
 create mode 100644 bin/HelloAndroid.apk
 create mode 100644 bin/classes.dex
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$attr.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$drawable.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$layout.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R$string.class
 create mode 100644 bin/com/railsplayground/playthings/helloandroid/R.class
 create mode 100644 bin/resources.ap_
 create mode 100644 default.properties
 create mode 100644 gen/com/railsplayground/playthings/helloandroid/R.java
 create mode 100644 res/drawable/icon.png
 create mode 100644 res/layout/main.xml
 create mode 100644 res/values/strings.xml
 create mode 100644 src/com/railsplayground/playthings/helloandroid/HelloAndroidActivity.java
$

おかしいなぁ。find では bin 配下が出力されんのですが create なログが出ている。出かけるみたいなので、とりあえずここで出力。