Android定制--------系统内置文件,用到linux服务(视频文件、音频文件等)

在Android定制的过程中,有客户要求将一些视频、音频等文件内置在系统中。将过程记录下来,方便以后查询。

内置过程大致分为以下几个过程:

1.将需要内置的我文件,放置指定文件夹。

2.用mk文件将需要内置的文件拷贝至镜像包里面存储,以便下一步l将文件拷贝纸系统内存;将赋值文件的脚本编译到out/system/xbin下。

3.创建开机运行shell脚本文件的服务,也就是将第2步的文件拷贝至系统内存的脚本。


下面逐步来说明:

1.将需要内置的我文件,放置指定文件夹:

这个步非常简单,就是将客户需要内置的文件放置指定的文件夹下。比如路径:vendor/sprd/sprd_media,这里需要注意的是,文件名字不能有空格什么的特殊奇怪的字符,不让在编译的时候会报错的。

2.用mk文件将需要内置的文件拷贝至镜像包里面存储,以便下一步l将文件拷贝纸系统内存。

这一步主要是将我们要内置的文件拷贝至system或者是data下面,见mk文件(这个mk文件需要到我们编译的mk文件中include进去,保证我们这个mk文件在编译的时候被执行)内容:

LOCAL_PATH:= vendor/sprd/sprd_media

PRODUCT_COPY_FILES += \
	$(LOCAL_PATH)/media/kr_SKARF_Dance.avi:data/preloadmedia/kr_SKARF_Dance.avi

其中有两个变量需要注意,LOCAL_PATCH和PRODUCT_COPY_FILES。LOCAL_PATCH就是当前的路径,PRODUCT_COPY_FILES是系统的一个变量,它的意思就是将目标文件复制的目标的文件夹,上面的意思就是将vender/sprd/sprd_media/media/kr_SKARF_Dance.avi文件拷贝至data/perloadmedia/下。

上面是赋值视屏文件的mk,下面贴上赋值shell脚本的mk(保证这个文件要被系统编译到):

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := preloadmedia.sh
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_SRC_FILES := preloadmedia.sh
include $(BUILD_PREBUILT)
这个mk文件的意思就是将preloadmedia.sh脚本文件编译到out/system/xbin下。基本的mk文件中的变量如果不明白的话建议去适当的百度。

3.创建开机运行的shell脚本文件,也就是将第2步的文件拷贝至系统内存的脚本。

在系统的init.sc8830.rc文件下面创建自己第一次启动时运行的服务,init.sc8830.rc文件在自己对应工程的Device目录下面,在init.sc8830.rc文件中添加一个Linux服务:

service preloadmedia /system/xbin/preloadmedia.sh
    disabled
    user root
    group media_rw

on post-fs-data
    start preloadmedia
	oneshot
这样就创建了一个开机启动的Linux服务,它的用途就是在开机的时候运行system/xbin/文件夹下面的preloadmedia.sh脚本,preloadmedia.sh脚本内容:

#!/system/bin/sh
PRELOAD_DEST=/mnt/shell/emulated/0/preloadmedia
PRELOAD_FLAG=${PRELOAD_DEST}/.preloadmedia
PRELOAD_SOURCE=/data/preloadmedia

if [ ! -d ${PRELOAD_DEST} ]
then
	mkdir -p ${PRELOAD_DEST}
fi

if [ ! -f ${PRELOAD_FLAG} ]
then
	files=$(ls ${PRELOAD_SOURCE}/)
	for i in ${files};do
		cat  ${PRELOAD_SOURCE}/${i} > ${PRELOAD_DEST}/${i}
	done
	echo "preloadmedia is done !!" > ${PRELOAD_FLAG}
fi
仔细阅读这个shell脚本文件,其实很简单,就是将/data/preloadmedia下面的文件遍历到内存中的/mnt/shell/emulated/0/preloadmedia下面,其中有一个标记:PRELOAD_FLAG,为了避免重复执行赋值的动作,如果PRELOAD_FLAG不存在就执行赋值动作。

上面就是最基本内置文件的过程,有什么地方写的不当或者有什么不是明白的可以留言,大家一起相互学习、进步。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值