Какие шаги получить root-доступ в эмуляторе Android для перезагрузки через код? - PullRequest
0 голосов
/ 26 мая 2011

Как мне получить root-права для перезагрузки эмулятора?Как убить все нежелательные процессы вместе с дочерним процессом?

Ответы [ 4 ]

0 голосов
/ 31 мая 2011

ps-после перезагрузки я также хотел убить все нежелательные процессы, кроме моего конкретного приложения и его дочерних процессов, для запуска в эмуляторе.

Если это действительно то, что вы хотите сделать - переназначить сборку Android в качестве стандартного встроенного Linux, то способ сделать это - создать образ виртуального диска (который Android упаковывает в ядро), содержащий файл init.rc, который запускает ваше приложение, а не нативные сервисы android и (java-esque dalvik) android runtime. Для восстановления виртуального диска требуется Unix-подобная ОС и таинственная командная строка cpio, которую вы можете найти в веб-поиске. Я хотел бы оставить там запуск ADB, чтобы вы могли отлаживать различные вещи, которые могут пойти не так.

В целях тестирования, просто набрав «stop» в оболочке adb, вы выключите среду выполнения android и получите виртуальную карманную коробку linux без пользовательского интерфейса. Все еще будут работать некоторые нативные службы, но они могут быть скорее помощью, чем вредом. В конечном итоге вам может понадобиться установить значения OOM killer для добавляемых вами вещей, хотя без времени выполнения это может не быть проблемой в ближайшей перспективе, если вы не потребляете много памяти.

Или, если вы хотите иметь очень закрытый и ограниченный пользовательский интерфейс, встроенный в среду выполнения Android, вместо этого вы должны разработать собственный домашний экран, протестировать его на неизмененном эмуляторе, а затем развернуть его в сборке. настроены так, чтобы не было никаких средств для установки других приложений.

0 голосов
/ 26 мая 2011

Большинство su бинарных файлов для Android зависит от SuperUser.apk (доступно бесплатно через рынок).Двоичный файл su использует этот apk, чтобы спросить пользователя, можно ли делать все, что ему требуется (и пользователь может вспомнить ответ).Если вы используете такой su, вам также нужно иметь этот apk.

После того, как все будет готово, ваше приложение может запустить процесс с правильными аргументами ... что-то вроде argv [0] ="/ path / to / su", argv [1] = "- c", argv [2] = "(любую команду, которую вы хотите запустить)", argv [3 ... n] = аргументы вашей команды.

0 голосов
/ 31 мая 2011

Чтобы убить процесс в командной строке, просто введите следующую командную строку в оболочке:

kill-9 YOUR_PID

Если вы знаете название процесса, но не pid, используйте

kill -9 $(pidof NAME_OF_PROCESS)

Вы также можете использовать его в своем коде:

Runtime.getRuntime().exec("kill-9 YOUR_PID");

Для получения более подробной информации см. Справочную страницу: http://unixhelp.ed.ac.uk/CGI/man-cgi?kill

0 голосов
/ 26 мая 2011

У вас уже есть root-доступ к вашему эмулятору.Чтобы убить процесс и все дочерние элементы, просто используйте представление устройства в eclipse, выберите эмулятор и выберите, какой процесс вы хотите убить.

Я понятия не имею, как перезапустить код, если вы ищете его.,Перезагрузить устройство должно быть легко: просто закройте его и затем загрузите снова.

(У меня такое ощущение, что я не совсем понимаю, что вы хотите ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...