7 Debian GNU/Linux Android SDK 使てみた


PIC
____________________________________________________________________

7.1 はじめに

Android Open Handset Alliance するプラトフですではめずらしくプンソ であるということでDebian 発者としてはしてみずにはいられませんDebian だからどうということは あまりないはずですがとりあえずSDK 1.5r1 リリされたのをにそろそろしてみることにし ます

7.2 利用

7.3 ダウンロインスト

Debian 発するために必要などをインストします

7.3.1 必要Debian インスト

Java 32bit エミなどをまずインストしておきます

# apt-get install ia32-libs sun-java6-bin sun-java6-jdk

x86_64 64bit 32bit アプリケ利用できるためにia32-libs インストします

またjava インストしておきます

7.3.2 SDK ダウンロ

Android SDK ダウンロしてきますDebian Linux 選択しますi386 しかないのでamd64 でも i386 エミ働するので利用できます http://developer.android.com/sdk/1.5_r1/index.html

$ unzip android-sdk-linux_x86-1.5_r1.zip
$ ls -l android-sdk-linux_x86-1.5_r1
 24
-rw-rw----  1 dancer dancer  193 2009-04-22 13:15 RELEASE_NOTES.html
drwxrwx---  3 dancer dancer 4096 2009-04-23 10:50 add-ons
drwxrwx--- 12 dancer dancer 4096 2009-05-01 16:13 docs
-rw-rw----  1 dancer dancer  176 2009-04-22 13:15 documentation.html
drwxrwx---  4 dancer dancer 4096 2009-04-23 10:50 platforms
drwxrwx---  3 dancer dancer 4096 2009-04-22 13:14 tools

tools レクトリパスしておきます.bashrc りにしておきます

export PATH="${PATH}":path/to/android/android-sdk-linux_x86-1.5_r1/tools/
7.3.3 eclipse ダウンロ

Debian になているいためeclipse サイトからダウンロしてきます http://www.eclipse.org/Ganymede x86-64 キテクチけのバイナリダウンロしてきま した

展開すればそこで ./eclipse すればエデ動します

$ tar xfz eclipse-java-ganymede-SR1-linux-gtk-x86_64.tar.gz
$ ls eclipse
about.html     configuration  eclipse.ini   libcairo-swt.so  plugins
about_files    dropins       epl-v10.html  notice.html      readme
artifacts.xml  eclipse       features     p2
$ cd eclipse/
$ ./eclipse
7.3.4 Eclipse Android プラグイン

Eclipse プラグインインストしますhttp://developer.android.com/sdk/1.5_r1/installing.html しますうまく動かない部分リングリスト使しい方法探します

プラグインhttp://dl-ssl.google.com/android/eclipse/site.xml から Android DDMS Android Development Tools インストすればよいようです

あ と す る と し て は Window Properties Android でさきほど展開した SDK パス ます

7.3.5 Android デバイス接続

udev 必要です/etc/udev/rules.d/z60_android.rules記記します

SUBSYSTEM=="usb_device",
SYSFS{idVendor}=="0bb4",MODE="0666",
SYMLINK+="%k"

接続できていればadb コマンド接続認できます

$ adb devices
List of devices attached
HT------ device

adb shell コマンド動します

$ adb shell

7.4 emulator してみる

まずコマンドラインから emulator 動するのをしてみましたemulator 動には AVD (Android Virtual Device) がまず必要なようですとりあえず適当してみました

$ android list targets
[選択能な]
$ android create avd -n uekawadroid -t 2
Android 1.5 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD ’uekawadroid’ based on Android 1.5
$ emulator -avd uekawadroid

エミAndroid をあつかうのと同じような感覚できますAndroid ブラウザ動したりできま エミからると10.0.2.2 ホスト OS アドレスになりますHTML+javascript したチンタイ 動作させてたところ動作しました

PIC

7.5 Android 単なアプリケして動してみる

それではAndroid 単なアプリケいてみまし http://developer.android.com/guide/developing/eclipse-adt.html にしたが淡々しますまずFile New Project Android のをプロジクト選択してしましたトビルド1.1 にとりあえず しろといてありますがよくわからないのでムウ1.5 にあわせておきま した

Run Run(Ctrl-F11) Android Application 選択するとエミ動してアプリケするこ とができます生成されたスコのままのだと Hello World アプリケ動し ます

7.6 Android 単なアプリケいてみる

アプリケエデ動の部分はなんとかなるようになたのでトリアル眺めてみます Hello World あたりがよさげです http://developer.android.com/guide/tutorials/hello-world.html

んでとりあえずサンプル眺めてどうやれば文字表示できるのかを認したのできな文字表示する アプリケてみます

Android top コマンドプロセスできるのでコマンドしてその表示するだけのアプリ してみましたをなす src/jp.gr.netfort.dancer/TopView.java 以下のようになりま した

package jp.gr.netfort.dancer;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.*;

public class TopView extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String [] command = { "top", "-n", "1"};
String output = "";

Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
process = runtime.exec(command);
} catch (Exception exception){
System.exit(1);
}
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
try {
while((line = reader.readLine()) != null) {
output = output + line + "\n";
}
} catch (Exception exception) {
System.exit(1);
} finally {
try {
reader.close();
} catch (Exception exception) {
System.exit(1);
}
}
TextView tv = new TextView(this);
tv.setText(output);
setContentView(tv);
}
}

PIC

7.7 Android 単なアプリケ働させてみる

使便アプリケてみましライトニングト実施するにどのプレゼンテ たかを表明する票用利用するボタンでもしましうか

7.7.1 エフクト

まずなんらかの果音必要ですした ding.wav をひろてきますres/raw 以下nautilus からドラグアンド ド ロ コ ピ し ま す

あとボタン味の必要です適当gimp をかいて png イルしました

nautilus から res/drawable 以下png イルドラグアンドドロコピします

イル名からそのままリソ名前するため-利用できないようです_ 利用できるようです he-up.png しようとしてエラたので he_up.png しました

PIC

7.7.2 レイアウト

おもむろに ImageButton してsrc リソしておきまし

7.7.3 クリクアクシ

R.id.ImageButton01 して onClickListener クリされた反応しまし

クリされたえるには ImageButton setImageResource() せばよいよう です

すにはMediaPlayer インスタンスstart() せばよいようです

してからすにはアラしてルバしてもらえるようにしてルバ されたときにをするようにすればよいようです

7.7.4 側のアクシ

それではクリされたときにどういうことをうのかのアクシしてみましHTTP します こういうイロモノするときには upaccho2 使うことがなのでそれを踏襲します (予定)

7.8 おまけ:発環必要メモリできるのか?

MacBook には 1GB しかメモリしていないですeclipse デフルトだと動した1GB くの メモリSwap 使してしまうというがありました

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17124 dancer    20   0  972m 302m  20m S    1 31.2   0:39.85 java

とりあえずヒントめて maps あたりを眺めてみますそれなりにたくさん mmap していますがそれだけでは きないようなメモリしています

$ cat /proc/17124/status | grep Vm
VmPeak:  1056748 kB
VmSize:  1003316 kB
VmLck:        0 kB
VmHWM:   310740 kB
VmRSS:   221616 kB
VmData:   788504 kB
VmStk:       84 kB
VmExe:       36 kB
VmLib:    38812 kB
VmPTE:     1108 kB
$ cat /proc/17124/maps | grep rw | sort -rn -k5
 .

とりあえず Java アプリケHeap 使がよくわからないのでjconsole 接続して ま す

メモリプがいくつかあることがわかります

eclipse.ini こうなているのですがこれをおそるおそるニングしてみます

-showsplash
org.eclipse.platform
-framework
plugins/org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m

動時したプメモリしていない部分についてはGC えば動はくなりますがうま くいけるようながしますXmx 128m してみるとメモリがりましたしかしそこまで的ではあり ませんねMaxPermSize 64MB にするとエラ

 Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space

発生しました96MB だとエラでおちないようです

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+   コメント
17124 dancer    20   0  972m 302m  20m S    1 31.2   0:39.85 java
19663 dancer    20   0  795m 296m  23m S    1 30.6   0:36.69 Heap 128MB
20266 dancer    20   0  661m 292m  22m S    1 30.1   0:41.62 MaxPermSize 96MB

がんばてみたにはメモリ10MB 程度しかできませんでしたエミ動していると 500MB くらい swap にいてしまうのでつらいですしかもギリギリメモリにしていたところ いろいろとしているとメモリ足りないというエラちましたこりダメメモリいにいく かな

-showsplash
org.eclipse.platform
-framework
plugins/org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx128m
-XX:MaxPermSize=96m

7.9 文献

にした文献です

52 エリア Debian 2009 5
____________________________________________________________________________________________