本文所述是正常的Android系统源码中加入一个开机自启动的应用,对于三方应用来说,则无法使用此例!请读者注意
我们都知道Android系统的启动流程是在Linux内核启动后,加载init引导脚本,拉起众多的系统服务,因此在init脚本中加入配置,不同芯片的引导脚本存放地址也许有差异,这是高通6350的地址: system/core/rootdir/init.rc
能看到init引导脚本长这样
service servicemanager /system/bin/servicemanager
class main
user system
group system
critical
onrestart resetart zygote
onrestart resetart media
onrestart resetart surfaceflinger
onrestart resetart drm
我们在设置一个开机自启动应用时,最有效的办法是复制一个与之权限接近的service,改为自己的serviceName,
全编译的时候设置脚本:在俩目录
build/make/target/product/base_system.mk build/sourcecode.sh
因为Android系统有一些se相关的系统权限(区别于Android清单文件中的权限或者是Android的运行时权限),因此也需要配置如下的脚本文件:
device/qcom/sepolicy/byd/attributes
device/qcom/sepolicy/byd/file.te
device/qcom/sepolicy/byd/file_contexts
device/qcom/sepolicy/byd/gbacqservice.te
device/qcom/sepolicy/byd/service.te device/qcom/sepolicy/generic/public/service.te
device/qcom/sepolicy/generic/private/service_contexts
device/qcom/sepolicy/byd/system_server.te
te为后缀的文件就是权限相关的文件,还有一些是需要提供给系统上下文,让其他的系统框架可以访问,类似我们在Android应用里 getService(“这里传的字符串”),这样的话就需要 device/qcom/sepolicy/generic/private/service_contexts里配置,反之则可以省略



