2013-03-08 5 views
6

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

У нас есть служба в init.rc, которая является сервером базы данных postgresql. Это запускается при запуске и всегда работает в фоновом режиме для системы. Однако есть вероятность, что он может закрыться, и мы хотели бы иметь возможность остановить и запустить эту услугу со стороны Android.

Есть ли способ отправить команду запуска init из андроидной активности? Из корневой оболочки это будет эквивалент запуска «start servicename» и «stop servicename».

ответ

11

Чтобы запустить службу, которая объявлена ​​в init.rc файле, я думаю, вы должны изменить «ctl.start» свойство системы с помощью следующих команд:

В C файл:

property_set("ctl.start", "<service_name>"); 

В Java:

SystemProperties.set("ctl.start", "<service_name>"); 

Это означает, что ваша деятельность имеет разрешение системы (в манифесте):

android:sharedUserId="android.uid.system" 

и подписан ваш системный ключ (или поставить платформу в Android.mk)

Как вы можете догадаться, прекратить использование сервиса следующих команд:

property_set("ctl.stop", "<service_name>"); 

или

SystemProperties.set("ctl.stop", "<service_name>"); 
+0

Извините, что я этого не замечал до сих пор. «Положить платформу в Android.mk» - это то, что доступно только для приложений C, работающих на Android? А для ключа системы это означает, что вы должны строить APK отдельно для каждой системы, к которой вы ее развертываете? – ekthomson

+1

Я угадываю системный ключ, это означает, что нам нужно будет построить всю систему Android для аппаратного обеспечения, если мы хотим использовать этот метод для запуска нашего сервиса. Я думаю, что в наши дни это будет бесполезно для наших нужд, потому что у нас недостаточно драйверов для аппаратного обеспечения, чтобы сами его строить, и мы полагаемся на производителя SoM для его создания. Спасибо за ответ. Я проверю у производителя SoM и посмотрю, смогут ли они дать нам более полное дерево сборки с включенными драйверами. – ekthomson