2013-03-08 11 views
6

Przed rozpoczęciem jest to przeznaczone dla naszego własnego urządzenia z systemem Android, a nie dla telefonu ani do wdrożenia w innym miejscu.Uruchamianie usługi Android init.rc z działania

Mamy usługę w init.rc, która jest serwerem bazy danych postgresql. To uruchamia się przy starcie i zawsze działa w tle dla systemu. Istnieje jednak możliwość, że może się zamknąć i chcielibyśmy mieć sposób na zatrzymanie i uruchomienie tej usługi od strony systemu Android.

Czy istnieje sposób na wysłanie polecenia init start z działania Android? Z powłoki głównej byłby to odpowiednik uruchomienia "start servicename" i "stop servicename".

Odpowiedz

11

Aby uruchomić usługę, która jest zadeklarowana w pliku init.rc, myślę, że trzeba zmienić „ctl.start” właściwości systemu z następujących poleceń:

w C Plik:

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

w Java:

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

oznacza to, że działalność ta ma uprawnienia systemowe (w manifeście):

android:sharedUserId="android.uid.system" 

i podpisuje swoim kluczem systemowym (lub umieścić platformy w Android.mk)

Jak można się domyślić, do zaprzestania używania usług następujące komendy:

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

lub

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

Przepraszam, że nie zauważyłem tego aż do teraz. Przez "umieścić platformę w Android.mk" jest coś, co jest tylko dla aplikacji C działających na Androida? A co do klucza systemowego, czy to oznacza, że ​​musisz skompilować pakiet APK oddzielnie dla każdego systemu, w którym chciałbyś go wdrożyć? – ekthomson

+1

Zgaduję, że klucz systemowy oznacza, że ​​musielibyśmy faktycznie zbudować cały system Android dla sprzętu, gdybyśmy chcieli wykorzystać tę metodę do uruchomienia naszej usługi. Myślę, że obecnie byłoby to w większości przypadków bezużyteczne dla naszych potrzeb, ponieważ nie mamy wystarczającej liczby sterowników dla sprzętu, aby sami go zbudować, a my polegamy na producencie SoM, aby go zbudować. Dziękuję za odpowiedź. Sprawdzę u producenta SoM i zobaczymy, czy mogą nam dać bardziej kompletne drzewo kompilacji z dołączonymi sterownikami. – ekthomson

Powiązane problemy