2013年9月28日土曜日

[Tizen]よく使うsdb(Smart Development Bridge)コマンドの使い方メモ

このエントリーをはてなブックマークに追加 はてなブックマーク - [Tizen]よく使うsdb(Smart Development Bridge)コマンドの使い方メモ

Tizenのエミュレーターや実機へのアプリ転送などをコマンドライン上で行えるsdb(Smart Development Bridge)がTizen SDKに同梱されています。 これはAndroidでいうadbコマンドのTizen版になります。

上記を利用する事でIDEを介さず、エミュレーターや実機にして操作が出来るのでよく使う機能などをメモを記載します。 (詳細はsdb helpコマンドで見れます)

  • sdbコマンドの場所
  • 接続されているTizenデバイスの確認
  • sdbコマンドの対象デバイスの指定
  • Tizenデバイスへのアプリ(tpk,wgt)のインストール
  • Tizenデバイスへのリモートログイン
  • Tizenデバイスからのファイル取得
  • Tizenデバイスへのファイル転送
  • その他

sdbコマンドの場所

Macの場合、$TIZEN_HOME/tools/sdbです。 パスは忘れてしまいましたが、Ubuntu、Windowsでも同様にsdbコマンド自体は利用可能です。(Windowsの場合にはコマンドプロンプト)

予め、.bashrcなどでパスを通しておくと便利です。 私の環境では以下のような感じ。

$export PATH=$PATH:/Users/toshihirock/tizen-sdk/tools

接続されているTizenデバイスの確認

エミュレーターや実機で現在PCに接続されていると認識しているTizenデバイス一覧を表示するにはsdb devicesコマンドを利用します。

$ sdb devices
* daemon not running. starting it now on port 26099 *
* daemon started successfully *
List of devices attached 
emulator-26100  device  mini
emulator-26110  device  abc1

List of devices attached配下に端末一覧が表示されています。 上記例ではminiabc1という名称のエミュレーターを2つ起動しています。

実機の場合にも、上記と同じように表示されます。 もし、実機が表示されない場合、端末のUSBデバッグモードが有効化されていない、もしくはUSBドライバがインストールされていない可能性があります。

なお、上記例ではdaemon not running. starting it now on port 26099ということでsdbサーバが同時に起動しています。

コマンドで明示的に起動する場合、sdb start-serverとすることで対応できますが、上記のように起動していなければ勝手に起動してくれるみたいなので個人的にはあまり使いません。(逆に停止する場合にはsdb kill-serverコマンドを利用します)

sdbコマンドの対象デバイスの指定

複数のTizenデバイスを接続している場合、どの端末に対してsdbコマンドを発行するか指定する必要があります。

対象が実機であるか、エミュレーターの違いかである場合にはオプションで-d-eを利用するのが便利です。(installコマンドについては後述)

$sdb -d install example.wgt
$sdb -e install example.wgt

-dオプションで実機(device)、-eオプションでエミュレーター(emulator)に対して指定したコマンドを実行しています。

実機を2台以上接続してる、エミュレーターを2台以上接続してる時はどうするかというとsdb devicesコマンドを利用してそれぞれのSerial Numberを取得し、オプションで-sを利用して指定します。

$sdb devices
List of devices attached 
emulator-26100  device  mini
emulator-26110  device  abc1
$sdb -s emulator-26100 install example.wgt

上記例ではまず、sdb devicesコマンドでそれぞれのSerial Numberを確認しています。 Serial Numberは一番左の名称が該当しています。(この例ではemulator–26100とemulator–26110)その後、-sオプションんを使用してSerial Numberが「emulator–26100」の方にアプリをインストールしています。

Tizenデバイスへのアプリ(tpk,wgt)のインストール

作成したtpk、wgtをTizenデバイスにインストールする場合にはsdb installコマンドを利用します。

$sdb -e install example.wgt

上記例ではexample.wgtというアプリをエミュレーターインストールしています。 既に上記アプリがインストールされている場合にも上記コマンドで上書き更新してくれます。

Tizenデバイスへのリモートログイン

Tizenデバイスにリモートログインする場合、sdb shellコマンドを利用します。なお、TizenIDEのConnection ExploerでもGUIでファイル構成などが確認できます。

$sdb -e shell
sh-4.1$

上記例ではエミュレーターにリモートログインしています。

普通にコマンドも使えます。

sh-4.1$ ls -la
total 88
dr-xr-xr-x  24 root root  4096 2013-07-17 20:38 .
dr-xr-xr-x  24 root root  4096 2013-07-17 20:38 ..
dr-xr-xr-x   2 root root  4096 2013-07-17 20:37 bin
dr-xr-xr-x   2 root root  4096 2013-06-14 10:38 boot
drwxr-xr-x   2 root root  4096 2013-07-17 20:36 cache
drwxr-xr-x   2 root root  4096 2013-08-03 23:36 csa
drwxr-xr-x   2 root root  4096 2013-07-17 20:36 data
drwxr-xr-x  15 root root  3700 2013-09-28 06:17 dev
drwxr-xr-x  39 root root  4096 2013-08-03 23:36 etc
lrwxrwxrwx   1 root root     9 2013-07-17 20:36 home -> /opt/home
dr-xr-xr-x   9 root root  4096 2013-07-17 20:37 lib
drwx------   2 root root 16384 2013-07-17 20:36 lost+found
drwxr-xr-x   2 root root    40 2013-09-28 06:17 media
drwxr-xr-x   9 root root  4096 2013-07-17 20:37 mnt
drwxr-xr-x  14 root root  4096 2013-07-17 20:37 opt
dr-xr-xr-x 108 root root     0 2013-09-28 06:17 proc
lrwxrwxrwx   1 root root    14 2013-07-17 20:36 root -> /opt/home/root
drwxr-xr-x  12 root root   340 2013-09-28 06:17 run
dr-xr-xr-x   2 root root  4096 2013-07-17 20:38 sbin
lrwxrwxrwx   1 root root     8 2013-07-17 20:36 sdcard -> /mnt/mmc
drwxr-xr-x   2 root root     0 2013-09-28 06:17 smack
drwxr-xr-x   2 root root  4096 2013-06-14 10:38 srv
dr-xr-xr-x  12 root root     0 2013-09-28 06:17 sys
drwxr-xr-x   2 root root  4096 2013-07-17 20:36 system
drwxrwxrwt  12 root root  1700 2013-09-28 06:43 tmp
drwxr-xr-x  16 root root  4096 2013-07-17 20:38 usr
drwxr-xr-x  16 root root  4096 2013-07-17 20:36 var

suコマンドでスーパーユーザーにもなれます。

上記より、例えばIDEのコンソールなどでhogeっていうファイルを吐き出したよって言っているけどそれってどこなんだって言うときにはsdb shellでリモートログインしてfindコマンドで探すっていうのが手っ取り早いです。

sdb shell -ls -laなどとコマンドを指定するとリモートログインすることなく、コマンドの実行も可能なようです。

Tizenデバイスからのファイル取得

Tizenデバイスからファイルを取得する場合、sdb pullコマンドを利用します。

$sdb -e pull /opt/usr/media/Images/Default.jpg ~/Downloads/
1 file(s) pulled. 0 file(s) skipped.
/opt/usr/media/Images/Default.jpg   5834 KB/s (632118 bytes in 0.105s)

上記例ではTizen端末の/opt/usr/media/Images/Default.jpgファイルをローカルPCの~/Downloads/においてね、という操作をしています。

Tizenデバイスへのファイル転送

Tizenデバイスへファイルを配置する場合、sdb pushコマンドを利用します。

$sdb -e push ~/Downloads/icon.jpg /opt/usr/media/Images/
1 file(s) pushed. 0 file(s) skipped.
/Users/toshihirock/Downloads/icon.jpg   210 KB/s (2799 bytes in 0.013s)

上記例ではローカルPCの~/Downloads/icon.jpgというファイルをTizen端末の/opt/usr/media/Images/においてね、という操作をしています。

sdb pullとsdb pushでは第1引数と第2引数の意味が違うので注意です。

その他

上記以外でもsdb uninstallでアプリをアンインストールしたり、やsdb dlogでログを見たりできますが、個人的にあまり使わないので割愛します。その他にもコマンドなどありますが、詳細はsdb helpで確認下さい。

[TIzen]アプリ転送時に「There is no device to launch」というダイアログが表示される場合

このエントリーをはてなブックマークに追加 はてなブックマーク - [TIzen]アプリ転送時に「There is no device to launch」というダイアログが表示される場合

エミュレーターを起動しているにも関わらず、IDEからRun Asでアプリをエミュレーターに転送しようとした際にThere is no device to launchというダイアログが表示される事があります。

上記の場合、Tizen IDEでConnection Exploerウィンドウを開けば問題が解消されます。

Tizen IDEをインストールした場合にはデフォルトで上記Windowは表示している状態だったと思いますが、消してしまった場合、Tizen IDEのWindow→Show View→Other→Tizen→Connection Exploerで再表示可能です。

また、上記ウィンドウでエミュレーターを含む現在sdbで認識しているデバイスが表示されるので、そこにエミュレーター(実機)があるかも確認できます。

sdbコマンドを利用することでアプリの転送も可能ですが、別の機会に!