일부 Android 기기의 경우 ADB 쉘에서 echo
, cd
, ls
만 실행할 수 있습니다. 내가 실행하면 :Android 기기에서 Linux 명령을 실행하려면 어떻게해야합니까?
tar -cvf //mnt/sdcard/BackUp1669/apk/test.tar /mnt/sdcard/test.apk
또는 명령 cp
, 그것은 반환
sh: tar: not found
이유는이 명령을 실행할 수 없습니다? 일부 장치는이 명령을 지원합니다. 마지막 목표는 /data/data 폴더의 파일을 SD 카드로 복사하는 것입니다. 나는 스와있고 난 다음 코드를 가지고 : is.ready()
에
int timeout = 1000;
String command = "tar -cvf /" + Environment.getExternalStorageDirectory() + "/cp/"
+ packageName + ".tar" + " " + path;
DataOutputStream os = new DataOutputStream(process.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(new DataInputStream(
process.getInputStream())), 64);
String inLine;
try {
StringBuilder sbCommand = new StringBuilder();
sbCommand.append(command).append(" ");
sbCommand.append("\n");
os.writeBytes(command.toString());
if (is != null) {
for (int i = 0; i < timeout; i++) {
if (is.ready())
break;
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (is.ready()) {
inLine = is.readLine();
} else {
}
}
} catch (IOException e) {
e.printStackTrace();
}
그것은 항상 정지를, 나는 process.waitfor()
로 변경하는 경우 또한 중단되었습니다. 왜?
당신은 안드로이드 셸이 표준 리눅스 OS보다 훨씬 제한적이라는 것을 알고 있습니까? – JoxTraex