Выполнение собственного файла из init.rc в Android - PullRequest
0 голосов
/ 20 июня 2019

Я хочу выполнить файл из vendor / bin из моего init.rc.Ниже код, который я добавил в мой файл init.rc

on property:sys.vendor.Test_callback=1
exec - system system -- /vendor/bin/testBinary
setprop sys.test.hello 62

Свойство sys.test.hello добавлено сюда, чтобы проверить, вызывается ли свойство или нет.Я вижу, что значение обновляется до 62 после выполнения.

Проблема здесь в том, что exec - system system -- /vendor/bin/testBinary это не выполняется.

Когда я запускаю как root из оболочки adb, это работаетхорошо.

Ниже приведены разрешения на файл testBinary, полученные после выполнения команды ls -l

-rwxr-xr-x 1 root      shell 

Что я здесь не так делаю?Политика SE linux уже отключена для проверки этого.

Ответы [ 3 ]

1 голос
/ 20 июня 2019

Вы можете запустить его как службу из init.rc.

сначала определите службу где-то в init.rc

service testBinary /vendor/bin/testBinary 
        disabled
        oneshot

Где-то в init.rc, где вы устанавливаете sys.vendor.Test_callback в1 вызов.

star testBinary 

Вы можете удалить oneshot, если хотите, чтобы служба перезапускалась при сбое.

1 голос
/ 04 июля 2019

Здесь проблема была в том, что я устанавливал свойство из приложения, которое не было запущено в процессе Phone.Решение: я создал службу в com.android.phone и выполнил команду exec - system system -- /vendor/bin/testBinary из новой службы, и она сработала для меня.

PS: Ответ, отправленный @Kiran Biradar, также работает нормально при выполнении изновый сервис

0 голосов
/ 20 июня 2019

Попробуйте использовать просто

exec -- /vendor/bin/testBinary
...