Java プログラムから Android エミュレーターにファイルをプッシュしたいと考えています。これで、ProcessBuilder を使用してエミュレーターを起動し、logcat メッセージをトラップできるようになりました。しかし、プロセス ビルダーで adb push コマンドを使用しようとすると、プロセスがハングし、出力が生成されません。
コード:
try {
ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe",
"push D:\\final.xml /mnt/sdcard/final.xml");
Process p = proc.start();
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ( (line = br2.readLine()) != null)
System.out.println(line);
} catch (Exception e) {
System.err.println("Error");
}
編集:- ありそうな解決策が見つかりました。Process.waitFor() メソッドを使用していましたが、返された終了コードを保存していませんでした。今私がこれをしたように:
int exitVal = p.waitFor();
すべてが魅力として機能しました。
@Marc Van Daele ご意見ありがとうございます。私の経験によると、ProcessBuilder は両方の方法で動作します。スペースまたはコンマで区切られた引数を使用できます。:)