Выполнение команд оболочки программно - PullRequest
1 голос
/ 28 января 2012

Я хочу выполнять команды этой оболочки программой.Как я могу это сделать?

cd C:\android-sdk\platform-tools
adb shell
su
mount -t rfs -o remount,rw /dev/block/stl9 /system
cp /sdcard/MyApp.apk /system/app/MyApp.apk

Ответы [ 3 ]

7 голосов
/ 28 января 2012

Мы можем выполнять команды оболочки с помощью класса Runtime.

Runtime.getRuntime().exec("ls");

Приведенный выше фрагмент кода создаст собственный процесс для данной команды ls , вернет тот же процесс, что и Процесс объект.

Подробнее об этом Проверьте здесь

2 голосов
/ 28 января 2012

Вы должны написать точный синтаксис, который вы использовали здесь, в файле .bat, а затем просто выполнить его.

1 голос
/ 04 мая 2016

Похоже, вы находитесь на станции Microsoft, поэтому, если подумать об использовании пакета, вы получите:

1-й метод : оставайтесь на своей станции и отправляйте полезные команды

cd C:\android-sdk\platform-tools
adb shell "su -c 'mount -o rw,remount /system'"
adb shell "su -c 'cp /sdcard/MyApp.apk /system/app/MyApp.apk'"
adb shell "su -c 'mount -o ro,remount /system'"

Единственное, что вы запустите и закроете 3 оболочки, но это не совсем так и проблема.

2-й способ : Оставайтесь на своей станции, отправьте скрипт sh на SDCard и выполните его

cd C:\android-sdk\platform-tools
adb push myscript.sh /sdcard/
adb shell "su -c 'sh /sdcard/myscript.sh'"

с "myscript.sh", содержащим:

#!/system/bin/sh
mount -o rw,remount /system
cp /sdcard/MyApp.apk /system/app/MyApp.apk
mount -o ro,remount /system

Помните, что сценарии оболочки Android, созданные на станции Microsoft, заканчиваются строкой CRLF! Вам нужно, чтобы LF заканчивал только ваши строки в UNIX-подобных системах!

...