Android7.0实现开机后台安装应用----rc文件的使用及权限问题
程序员文章站
2023-03-28 10:15:47
需求
每次开机之后,后台自动安装一个apk。(实现方法可能有多种,这里只记录我用的)
需求分析
我的思路是写一个脚本放到中,然后每次开机的时候在rc文件中启动这个脚本服务。
具体实现步骤
第一,将所...
需求
每次开机之后,后台自动安装一个apk。(实现方法可能有多种,这里只记录我用的)
需求分析
我的思路是写一个脚本放到中,然后每次开机的时候在rc文件中启动这个脚本服务。
具体实现步骤
第一,将所需要安装的apk文件保存在系统,我这里是放到system/etc/目录下面了,放在system分区下有个好处就是不会被用户删掉,当然不能放太多无意义的东西,否则你的img会变得很大。可以通过mk中的product_copy_file进行操作:
product_copy_file=xxx/xx.apk:system/etc/xx.apk
第二,将安装脚本写好编进系统中去,这个脚本文件很简单,如下:
和上面copy apk文件一样,将脚本文件copy到system/bin/目录下,如下:
product_copy_file=xxx/install_app.sh:system/bin/install_app.sh
第三,在rc文件中启动这个脚本服务,我们在rc文件中声明这个服务:
service service_install /system/bin/install_app.sh user root group root disabled oneshot
这里简单说一下上面代码的意思,
第一个service表示声明服务,后面的service_install指的是service的名字,后面跟的是文件路径;
disable和oneshot表示该服务只执行一次,运行完就设置为禁用。
既然是开机的时候执行,那么就需要一个触发点,这里用到rc里面的onproperty语法,sys.boot_completed=1,如下:
on property:sys.boot_completed=1 start service_install
然后编译烧写整个系统就行。
遇到的问题
烧录开机之后发现服务并没有起来,查看kernel的log发现是权限问题。为了确认这个问题,我尝试把系统selinux关掉,发现服务是能正常起来的。
解决问题
我们需要通过log来一条条的加上权限。
上一篇: iOS开发零碎知识点