Windows版 adb.exeの実行属性付きファイルの転送方法

371 views
Skip to first unread message

Katsuhiko Sato

unread,
Apr 7, 2009, 2:06:01 PM4/7/09
to Android-Embedded-Japan
各位

ユビラボ佐藤です
はじめまして

需要がどのぐらいあるか分かりませんが^^;
Windows用のAndroid SDKについてくるadb.exeを変更しました。
基本的にはcygwin環境でビルド可能です。
Android.mkを他のライブラリがビルドされていない状態で、
mmにより単独ビルドできるように設定してあります。


http://groups.google.co.jp/group/android-embedded-japan/web/adb_patched_for_win.zip

ビルド方法はこんな感じで

cygwin環境にAndroidのレポジトリを作成し(ここではmydroidとします)
externalフォルダ配下に添付のファイルを展開します。
cygwinのコマンドライン上で下記のコマンドを
入れることにより、mydroid/external/adb/out配下にadb.exeが
作成されます。

#cd /path/to/mydroid
#source build/envsetup.sh
#cd external/adb
#mm

変更点としては、
環境変数ADBPUSHMODEにlinuxのパーミッション数字を
指定することで、コマンドプロンプト環境でも実行属性付の
ファイルを送信(push)することができるようになります。
(※指定できるパーミッションは実行属性のみです)

特に、ターゲット環境でadbdのみ動いていて、
他にshell等何もない環境で、windowsマシンからbusyboxを
pushする際に有用です。

私の場合は、linuxのkerne作成時にのINITRAMFSに
実行ファイルとしてandroidのinit, akmdのみを入れたものを
作成し、kernelにビルドインしてしまい、起動時に
最低限android版initが起動する状態にしておいて、
あとからadbを使ってbusyboxを突っ込み、shやtelnetdを起動させ
nfsやcifsで必要なファイル(flashイメージやloopbackイメージ等)を
参照させる、などの使い方をしています。
注意点としては、adb shellを使うために/system/bin/shが
利用できる必要があるため、
あらかじめinitramfsのイメージに/system/bin/shからbusyboxへ
のシンボリックリンクを張っておきます。
下記の例の場合次のイメージです

cd /path/to/initramfs
cd system/bin/
ln -s /busybox sh

あとはカーネル起動後に下記のようにしてadbを利用します
> set ADBHOST=192.168.10.1 ※ターゲットのipアドレス
> set ADBPUSHMODE=555 ※ターゲットに突っ込むファイルのパーミッション
> adb kill-server
> adb push busybox /
> adb shell /busybox --install
> adb shell

この段階で、ddms等利用できますので、ハードのデバッグには
便利かと思います。
Reply all
Reply to author
Forward
0 new messages