adb pullのコピー先はどこ?
ちょっと嵌ったのでメモ。
adb pull のコピー先が予想外の場所になるケースがあるという話。
エミュレータ内のファイルをホストマシンへコピーするには、adb pull コマンドを使う。
構文は以下のような感じ。
adb pull <エミュレータ内のコピー元ファイル> <コピー先ファイル>
たとえば、エミュレータのSDカードのルートにある test.txt をホストにコピーするには、以下のようにすれば良いのだが…
cd "C:\Program Files (x86)\Android\android-sdk\platform-tools"
adb pull /sdcard/text.txt text.txt
android-sdk をインストーラでインストールしたウチの環境(Windows 7 64bit)では、上記のパスにadbコマンドがある。このため、パスを通してなかった頃は上記のように cd で移動してから、adb コマンドを実行していた。
しかし、この場合、何故かカレントディレクトリにはファイル test.txt が生成されず、以下の場所に生成される。
C:\Users\ユーザ名\AppData\Local\VirtualStore\Program Files (x86)\Android\android-sdk\platform-tools
ただし、adbまでパスを通しておいた状態で、コマンドプロンプト起動直後に以下だけを実行すると、ちゃんとカレントディレクトリ(この場合は、C:\Users\ユーザ名)にファイルが生成される。
adb pull /sdcard/text.txt text.txt
何故カレントディレクトリにコピーされないことがあるのかは不明。
インストーラでインストールした場合のsdkのインストール先には変なファイル権限が付加されていたので(Program Files 配下だからかも?)、それが原因でカレントにファイルが生成できず、別の場所に作成される……のだろうか?
まあ、コマンドへパスを通しておけば問題はないのだが。
ちなみに、コピー先のファイル名を ./text.txt としても結果は変わらなかった。