Android中调用自定义服务执行脚本

项目需求中,需要持久化存储若干标志位,以保存相关结果。现记录实现流程。

一、编写shell脚本并配置到Android源码中

1.编写shell脚本

#!/system/bin/sh

mount -o rw,remount /efs

echo PASS > /efs/test_status

具体含义不再解释。

2.配置脚本路径

将编写好的shell脚本存放在device/samsung/avl7420/etc/change.teststatus.failed.sh,不同版本的源码之间略有差异,请根据实际情况适当调整。

编译完成后将shell脚本存放在/system/etc/change.teststatus.failed.sh。

通过/device/samsung/avl7420/device.mk完成以上动作:

PRODUCT_COPY_FILES += \

        device/samsung/avl7420/etc/change.teststatus.failed.sh:/system/etc/change.teststatus.failed.sh

第一步完成。

二、注册服务执行shell脚本

在init.rc文件中注册服务并执行制定的shell脚本:

service changetsp /system/bin/sh /system/etc/change.teststatus.pass.sh

    class main

    user root

    group root

    disabled

    oneshot

第二步完成。


三、在代码中调用注册的服务

SystemProperties.set("ctl.start", "changetsp");

第三步完成。

以上即为全部操作。


以上只是完成该需求的一种方法,相关网络资料较少,故记录下来。

另外尝试过直接修改init.rc相关代码实现,或者通过修改标志位触发调用服务,其中部分操作失败了,或许有其他更方便快捷的方式,尚有待研究。

你可能感兴趣的:(Android中调用自定义服务执行脚本)