5

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 は両方の方法で動作します。スペースまたはコンマで区切られた引数を使用できます。:)

4

1 に答える 1

5

これは次のような個別の引数であるべきではありませんか

ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe", "push",  "D:\\final.xml", "/mnt/sdcard/final.xml");
于 2012-06-21T11:36:05.560 に答える