Как прочитать значение в файле с помощью Android init.rc (vendor.rc) - PullRequest
0 голосов
/ 03 июля 2019

в системе андроид (пирог 9.0) Я хочу прочитать значение из файла (/ cache / sticky / lcdlive) и записать его в системное свойство (persist.vendor.lcd.live) в init.vendor.rc

в exe.sh:

lcdfiletmp="cache/sticky/lcdlive"
lcdlivetmp=$(cat "$lcdfiletmp")
setprop persist.vendor.lcd.live $lcdlivetmp 

, но согласно SElinux я не имею права.

Я пробовал в vendor.rc:

copy /cache/sticky/lcdlive persist.vendor.lcd.live
write persist.vendor.lcd.live /cache/sticky/lcdlive 

результат: persist.vendor.lcd.live = "/ cache / sticky / lcdlive", но не "значение" файла / cache / sticky / lcdlive (который является числом)

on early-init
 setprop persist.vendor.lcd.live  0

on property:sys.boot_completed=1
 copy /cache/sticky/lcdlive persist.vendor.lcd.live

ожидается: persist.vendor.lcd.live = значение в файле / cache / sticky / lcdlive

1 Ответ

0 голосов
/ 15 июля 2019

Я не нашел способа прочитать файл в init.vendor.rc, но нашел решение:

  1. создать службу с scripte.sh в init.vendor.rc
  2. в scripte.sh:
   lcdfiletmp="cache/sticky/lcdlive"
    lcdlivetmp=$(cat "$lcdfiletmp")
    setprop persist.vendor.lcd.live $lcdlivetmp

наиболее важно объявить сценарий для system и chown / cache / sticky / * для system .объявить свойство как vendor_custom

добавить правила SElinux в * .te

это довольно сложная проблема selinux, если у вас есть подобные проблемы, не стесняйтесьспросить здесь.

...