基于SnapDragonBoard410c 开机copy文件

上次我给大家分享了下,基于高通410c开发板文件内置。本次继续为大家讲解下Android init.rc里是如何拉起一个服务对我们的资源文件进行拷贝转移。因为在Android系统当中System 文件夹的权限对于普通用户来说只有只读的权限,Root 用户可读可写可执行。

on init
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root
    mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
    mkdir /storage/sdcard1 0700 root root
    export EXTERNAL_STORAGE /storage/emulated/legacy
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated
    export SECONDARY_STORAGE /storage/sdcard1

上面的这段代码来自AOSP。很多设备有Sd卡,但是都没有把它当作external storage,实际上这就是这些设备的“secondary volume”。所以mkdir /storage/sdcard1 0700 root root
这句话就定义了System文佳夹的属性。

这里写图片描述

上图是我们在device/qcom/msm8996/init.target.rc中定义的一个copy文件的服务。

Service +名称 +执行的脚本。执行的脚本可以不需要,但是你必须在service中书写你要的逻辑。
下面 我将为大家一一讲解service的各种属性的作用。

user root
相当于申明该service的权限为Root 权限。

onshot 表明该服务只执行一次。

on property 表明该服务启动的时间节点。

start service 启动该service。

当我们开机的时候需要往sdcard中copy数据,然而我们不知道sdcard是否已近挂载成功。所以我们需要在mountservice中自定义一个用于启动service属性。也就是说我开机挂载 sdcard成功后把sys.tsvr.media_mounted的值改为true。我们的服务是从开机后一直监听这个属性,只要这个属性的值为true,服务立马启动。
这里写图片描述

在frameworks/base/services/core/java/com/android/server/MountService中对sys.tsvr.media_mounted赋值。

猜你喜欢

转载自blog.csdn.net/u013763766/article/details/78803414