On some Android devices, in the ADB shell, I can only run echo, cd, ls. When I run:

tar -cvf //mnt/sdcard/BackUp1669/apk/test.tar /mnt/sdcard/test.apk

Or the command cp, it returns:

sh: tar: not found

Why can I not run these commands? Some devices support these commands. My end goal is to copy a file from the /data/data folder to SD card. I got su and I got the following code:

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();

}

It always stops in is.ready(), and when I changed it to process.waitfor() it also stopped. Why?

解决方案

You can run Linux commands on Android. But there are usually just very few pre-installed.

If you want to add more commands you might want to root your device and install busybox on it.

This is not for productive use within an application but can help you to work with your device.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐