我想从init.rc执行来自vendor / bin的文件。下面的代码我已经添加到我的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
未被执行。
当我从adb shell作为root用户运行时,效果很好。
以下是执行ls -l后获得的文件testBinary
的权限
-rwxr-xr-x 1 root shell
我在这里做错了什么? SE linux策略已被禁用以对此进行测试。
答案 0 :(得分:1)
您可以从init.rc
作为服务运行它。
首先在init.rc
service testBinary /vendor/bin/testBinary
disabled
oneshot
您在init.rc
中将sys.vendor.Test_callback
设置为1
通话的某个地方。
star testBinary
如果要在崩溃时重新启动服务,可以删除oneshot
。
答案 1 :(得分:1)
这里的问题是,我正在从未在Phone进程中运行的应用程序设置属性。
解决方案:我在com.android.phone中创建了一个服务,并从新服务中执行了命令exec - system system -- /vendor/bin/testBinary
,它对我有用。
PS:@Kiran Biradar发布的答案在从新服务执行时也可以正常工作
答案 2 :(得分:0)
尝试仅使用
exec -- /vendor/bin/testBinary