Deletions are marked like this. | Additions are marked like this. |
Line 65: | Line 65: |
=== adb === エミュレータコンソールはデバイス自体の「ハードウェア」状態を操作できるものならば、adbの方はソフトウェアをいじることができるものであるらしい。まず第一には、デバイス中のlinuxのシェルを操作することができる。 {{{ adb shell }}} エミュレータが複数ある場合は {{{ adb -s emulator-5554 shell }}} これでlinuxのシェルコマンドを普通に使うことができる。 {{{ # ls -l Android Console: type 'help' for a list of commands OK adb devices KO: unknown command, try 'help' quit ホストとの接続が切断されました。 C:\Users\ytm>cd \devel C:\devel>dir ドライブ C のボリューム ラベルは SW_Preload です ボリューム シリアル番号は 7AD1-D35E です C:\devel のディレクトリ 2010/09/25 01:33 <DIR> . 2010/09/25 01:33 <DIR> .. 2010/09/25 01:43 <DIR> android-sdk-windows 2010/09/24 23:22 <DIR> eclipse-3.6 2010/09/27 09:58 <DIR> eclipse-classic-3.5-android 2010/09/24 23:51 <DIR> ework2 2010/07/28 22:33 <DIR> maven2 2010/05/12 12:06 <DIR> mockito-1.8.4 2010/09/09 21:56 <DIR> netbeans 2010/09/09 21:38 <DIR> scala 2010/07/25 10:32 <DIR> swingx-1.6-src 2010/08/29 11:12 <DIR> tools 2010/09/26 12:21 <DIR> workspace-android 2010/08/29 18:17 <DIR> workspace-gs 2010/09/22 23:59 <DIR> workspace-mh2 0 個のファイル 0 バイト 15 個のディレクトリ 4,579,631,104 バイトの空き領域 C:\devel>cd android-sdk-windows C:\devel\android-sdk-windows>cd tools C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device C:\devel\android-sdk-windows\tools>start emulator -avd your_avd C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb shell error: more than one device and emulator C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 device C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell # quit quit quit: not found # exit exit C:\devel\android-sdk-windows\tools>adb -s emulator-5555 shell error: device not found C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 device C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell # cd /data/app cd /data/app # ls ls com.example.android.apis-1.apk com.example.android.apis-2.apk com.example.android.wiktionary-2.apk com.example.android.skeletonapp-1.apk asdfa.asdfasdf-1.apk com.example.android.jetboy-2.apk # adb uninstall com.example.android.skeltonapp-1.zpk adb uninstall com.example.android.skeltonapp-1.zpk adb: not found # uninstall com.example.android.skeltonapp-1.zpk uninstall com.example.android.skeltonapp-1.zpk uninstall: not found # ls -l ls -l -rw-r--r-- system system 2461518 2010-09-25 02:36 com.example.android.apis- 1.apk -rw-r--r-- system system 2461518 2010-09-25 03:05 com.example.android.apis- 2.apk -rw-r--r-- system system 48626 2010-09-25 07:45 com.example.android.wikti onary-2.apk -rw-r--r-- system system 10363 2010-09-25 07:56 com.example.android.skele tonapp-1.apk -rw-r--r-- system system 12680 2010-09-26 10:47 asdfa.asdfasdf-1.apk -rw-r--r-- system system 1566622 2010-09-27 01:02 com.example.android.jetbo y-2.apk # # # # uninstall com.example.android.skeltonapp-1.apk uninstall com.example.android.skeltonapp-1.apk uninstall: not found # ls -l ls -l -rw-r--r-- system system 2461518 2010-09-25 02:36 com.example.android.apis- 1.apk -rw-r--r-- system system 2461518 2010-09-25 03:05 com.example.android.apis- 2.apk -rw-r--r-- system system 48626 2010-09-25 07:45 com.example.android.wikti onary-2.apk -rw-r--r-- system system 10363 2010-09-25 07:56 com.example.android.skele tonapp-1.apk -rw-r--r-- system system 12680 2010-09-26 10:47 asdfa.asdfasdf-1.apk -rw-r--r-- system system 1566622 2010-09-27 01:02 com.example.android.jetbo y-2.apk # exit exit C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell error: device not found C:\devel\android-sdk-windows\tools>start emulator -avd my_avd C:\devel\android-sdk-windows\tools>adb shell # # # # ls -l dr-x------ root root 2010-09-27 06:00 config drwxrwx--- system cache 2010-09-25 00:49 cache lrwxrwxrwx root root 2010-09-27 06:00 sdcard -> /mnt/sdcard drwxr-xr-x root root 2010-09-27 06:00 acct drwxrwxr-x root system 2010-09-27 06:00 mnt lrwxrwxrwx root root 2010-09-27 06:00 d -> /sys/kernel/debug lrwxrwxrwx root root 2010-09-27 06:00 etc -> /system/etc drwxr-xr-x root root 2010-06-30 21:06 system drwxr-xr-x root root 1970-01-01 00:00 sys drwxr-x--- root root 1970-01-01 00:00 sbin dr-xr-xr-x root root 1970-01-01 00:00 proc -rwxr-x--- root root 12995 1970-01-01 00:00 init.rc -rwxr-x--- root root 1677 1970-01-01 00:00 init.goldfish.rc -rwxr-x--- root root 107412 1970-01-01 00:00 init -rw-r--r-- root root 118 1970-01-01 00:00 default.prop drwxrwx--x system system 2010-09-25 03:37 data drwx------ root root 2010-01-28 00:59 root drwxr-xr-x root root 2010-09-27 06:01 dev # }}} |
Androidエミュレータについて
リンク
何をエミュレートするものか
Android用の開発プログラムは実機を用いることなくエミュレータ上で実行することができるのだが、このエミュレータなるものは、単にJavaコードを実行するのではなく、実機のCPUをエミュレートするものであるらしい。
つまり、実機のCPUがARMプロセッサであるならば、そのARMプロセッサ自体の動作をエミュレートし、その上にDalvik-VMを動作させ、その上で開発コード(Javaのコンパイル済みクラスをまとめたapkファイル)を実行するようだ。
このCPUエミュレーションにはQEMUというものが使用されているとのこと。
このように、おそらくx86系とは根本的に命令セットの異なると思われる(よく知らないのだが)ARMプロセッサをx86上で動作させるため、エミュレータの動作には非常にCPUパワーが必要になる。
複数のエミュレータを起動する
エミュレータは同時に複数起動することができる(それが何になるのか現在のところ不明)。
まず、Eclipse上で「設定/Android SDK and AVD Manager」を選択し、Virtual Devicesを選択。複数のavdを作成する。 これを仮にmy_avd, your_avdとする。これらのavdはこの画面にも表示されているように「ユーザ名\.android\avd」フォルダに作成される。つまり、SDKインストールディレクトリとは別の場所に作成されている。
他にも作成方法があるらしいがこれが最も簡単。
次に、コマンドプロンプトで「SDKインストールディレクトリ\tools」に移り、
start emulator -avd my_avd start emulator -avd your_avd
などとする。一つのavdについてはただ一つのエミュレータしか動作しないため、
start emulator -avd my_avd start emulator -avd my_avd
としても一つのエミュレータしか起動しない。
エミュレータの使用するポートは5554から2刻みで、この場合は5554と5556になる(エミュレータ画面に表示される)。 つまり、最初のエミュレータは5554,5555ポートを使用し、次は5556,5557を使用する。
エミュレータの制御
最初のエミュレータは、ポート5554と5556の二つのポートを使用するが、これはそれぞれ以下の目的で使用される。
- 5554 エミュレータコンソール
- 5555 adb用
エミュレータコンソール
コンソールについては冒頭リンクのエミュレータコンソールの使用を参照。
単純にtelnetを使用して接続でき、そこで様々なコマンドを発行することができる。
telnet localhost 5554
これらのコマンドで、実機のハードウェア状態のエミュレートを指示することができる。例えば、 「power ac off」ではAC電源に接続されていない状態(バッテリーでの駆動)にすることができるし、 「power capacity 10」とすればバッテリー残量を10%とすることができる。
エミュレータ上のプログラムがこれらのハードウェア状態に対応しなければならない性質のものである場合、適切に対処することができるかをテストできるというわけ。
adb
エミュレータコンソールはデバイス自体の「ハードウェア」状態を操作できるものならば、adbの方はソフトウェアをいじることができるものであるらしい。まず第一には、デバイス中のlinuxのシェルを操作することができる。
adb shell
エミュレータが複数ある場合は
adb -s emulator-5554 shell
これでlinuxのシェルコマンドを普通に使うことができる。
# ls -l Android Console: type 'help' for a list of commands OK adb devices KO: unknown command, try 'help' quit ホストとの接続が切断されました。 C:\Users\ytm>cd \devel C:\devel>dir ドライブ C のボリューム ラベルは SW_Preload です ボリューム シリアル番号は 7AD1-D35E です C:\devel のディレクトリ 2010/09/25 01:33 <DIR> . 2010/09/25 01:33 <DIR> .. 2010/09/25 01:43 <DIR> android-sdk-windows 2010/09/24 23:22 <DIR> eclipse-3.6 2010/09/27 09:58 <DIR> eclipse-classic-3.5-android 2010/09/24 23:51 <DIR> ework2 2010/07/28 22:33 <DIR> maven2 2010/05/12 12:06 <DIR> mockito-1.8.4 2010/09/09 21:56 <DIR> netbeans 2010/09/09 21:38 <DIR> scala 2010/07/25 10:32 <DIR> swingx-1.6-src 2010/08/29 11:12 <DIR> tools 2010/09/26 12:21 <DIR> workspace-android 2010/08/29 18:17 <DIR> workspace-gs 2010/09/22 23:59 <DIR> workspace-mh2 0 個のファイル 0 バイト 15 個のディレクトリ 4,579,631,104 バイトの空き領域 C:\devel>cd android-sdk-windows C:\devel\android-sdk-windows>cd tools C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device C:\devel\android-sdk-windows\tools>start emulator -avd your_avd C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 offline C:\devel\android-sdk-windows\tools>adb shell error: more than one device and emulator C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 device C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell # quit quit quit: not found # exit exit C:\devel\android-sdk-windows\tools>adb -s emulator-5555 shell error: device not found C:\devel\android-sdk-windows\tools>adb devices List of devices attached emulator-5554 device emulator-5556 device C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell # cd /data/app cd /data/app # ls ls com.example.android.apis-1.apk com.example.android.apis-2.apk com.example.android.wiktionary-2.apk com.example.android.skeletonapp-1.apk asdfa.asdfasdf-1.apk com.example.android.jetboy-2.apk # adb uninstall com.example.android.skeltonapp-1.zpk adb uninstall com.example.android.skeltonapp-1.zpk adb: not found # uninstall com.example.android.skeltonapp-1.zpk uninstall com.example.android.skeltonapp-1.zpk uninstall: not found # ls -l ls -l -rw-r--r-- system system 2461518 2010-09-25 02:36 com.example.android.apis- 1.apk -rw-r--r-- system system 2461518 2010-09-25 03:05 com.example.android.apis- 2.apk -rw-r--r-- system system 48626 2010-09-25 07:45 com.example.android.wikti onary-2.apk -rw-r--r-- system system 10363 2010-09-25 07:56 com.example.android.skele tonapp-1.apk -rw-r--r-- system system 12680 2010-09-26 10:47 asdfa.asdfasdf-1.apk -rw-r--r-- system system 1566622 2010-09-27 01:02 com.example.android.jetbo y-2.apk # # # # uninstall com.example.android.skeltonapp-1.apk uninstall com.example.android.skeltonapp-1.apk uninstall: not found # ls -l ls -l -rw-r--r-- system system 2461518 2010-09-25 02:36 com.example.android.apis- 1.apk -rw-r--r-- system system 2461518 2010-09-25 03:05 com.example.android.apis- 2.apk -rw-r--r-- system system 48626 2010-09-25 07:45 com.example.android.wikti onary-2.apk -rw-r--r-- system system 10363 2010-09-25 07:56 com.example.android.skele tonapp-1.apk -rw-r--r-- system system 12680 2010-09-26 10:47 asdfa.asdfasdf-1.apk -rw-r--r-- system system 1566622 2010-09-27 01:02 com.example.android.jetbo y-2.apk # exit exit C:\devel\android-sdk-windows\tools>adb -s emulator-5554 shell error: device not found C:\devel\android-sdk-windows\tools>start emulator -avd my_avd C:\devel\android-sdk-windows\tools>adb shell # # # # ls -l dr-x------ root root 2010-09-27 06:00 config drwxrwx--- system cache 2010-09-25 00:49 cache lrwxrwxrwx root root 2010-09-27 06:00 sdcard -> /mnt/sdcard drwxr-xr-x root root 2010-09-27 06:00 acct drwxrwxr-x root system 2010-09-27 06:00 mnt lrwxrwxrwx root root 2010-09-27 06:00 d -> /sys/kernel/debug lrwxrwxrwx root root 2010-09-27 06:00 etc -> /system/etc drwxr-xr-x root root 2010-06-30 21:06 system drwxr-xr-x root root 1970-01-01 00:00 sys drwxr-x--- root root 1970-01-01 00:00 sbin dr-xr-xr-x root root 1970-01-01 00:00 proc -rwxr-x--- root root 12995 1970-01-01 00:00 init.rc -rwxr-x--- root root 1677 1970-01-01 00:00 init.goldfish.rc -rwxr-x--- root root 107412 1970-01-01 00:00 init -rw-r--r-- root root 118 1970-01-01 00:00 default.prop drwxrwx--x system system 2010-09-25 03:37 data drwx------ root root 2010-01-28 00:59 root drwxr-xr-x root root 2010-09-27 06:01 dev #