2013-02-21 5 views
0

Я использую команды adb для управления процессами на Android-телефоне.Как начать процесс на Android-устройстве с помощью adb

Я могу убить конкретный процесс с помощью команды

adb kill "PID" (PID is the process ID) 

и процесс погибает.

Но когда я начинаю его с помощью команды

adb start "PID" 

Он не начинает процесс.

И процесс, который я хочу начать, находится в папке/system/bin, и я не знаю, что это за пакет или название активности. Все, что я знаю, это «PID» и «Пользователь» процесса.

Есть ли какая-либо команда, которая запускает определенный процесс на устройстве Android?

+0

- это родное или далвиковое приложение? вы можете дать настоящее имя? –

+0

это приложение в папке/system/bin, и это родное приложение. – DeveloperLove

ответ

2

Как только вы убили процесс, соответствующий PID, как вы можете начать его снова?

Вы можете вместо этого попытаться запустить приложение из adb таким образом: -

adb shell 
am start -n com.package.name/com.package.name.ActivityName 

Или вы можете использовать это непосредственно:

adb shell am start -n com.package.name/com.package.name.ActivityName 
+0

Процесс, который я собираюсь запустить, находится в папке/system/bin, и я не знаю имя пакета для этого. Все, что я знаю, это PID и пользователь для этого процесса – DeveloperLove

+0

, вы можете получить информацию о запущенном приложении с помощью 'PID '[this] (http://stackoverflow.com/a/8543401/2024761). После этого вы можете сделать то, что я предложил выше. – SudoRahul

1

Родные приложения не имеют действия. Они просто такие - родные двоичные файлы.

Если все, что вы знаете, является числовым идентификатором процесса, то команда ps <PID> покажет вам имя двоичного файла процесса в столбце NAME. Как это:

# ps 407 
USER  PID PPID VSIZE RSS  WCHAN PC   NAME 
root  407 1  4540 272 ffffffff 000160a4 S /sbin/adbd 

Если PPID значение 1 - это означает, что она была запущена система init и более вероятно, чем не приложение является «сервис» приложение. Чтобы управлять им, вам нужно найти имя службы, а затем просто используйте stop <service> и start <service>.

Чтобы найти имя запуска службы в grep ^service /init*rc | grep <binary name> имя сервиса будет во второй колонке (т.е. «adbd»):

# grep ^service /init*rc | grep /sbin/adbd 
/init.rc:service adbd /sbin/adbd 

Таким образом, чтобы правильно контролировать это приложение - вы должны использовать stop adbd и start adbd.

0

Вы сказали, что знаете, что ваш двоичный файл находится в/system/bin, поэтому я предполагаю, что вы также знаете имя этого двоичного файла. В случае, если вы этого не сделаете, что команда поможет вам узнать:

ps PID 

Для запуска исполняемых файлов (например.Провел) вы просто должны ввести свое имя в оболочке:

adb shell 
uptime 

или в одной команде

adb shell uptime 

, но если ваш двоичный файл не находится в одном из каталогов, перечисленных в переменной $ PATH, вы должны введите полный путь к нему

adb shell /system/bin/uptime 

вы можете проверить $ PATH с:

adb shell echo $PATH 
Смежные вопросы