源码平台:rk3399
摘要:
1.拷贝cameraserver.rc编译拷贝到system/etc/init目录
2.启动cameraserver服务
摘要1:cameraserver.rc编译拷贝到system/etc/init目录
android 系统启动完bootloader后,会启动内核,内核启动完后,会启动文件系统,很多服务也是在这时候启动起来,CameraService的启动在frameworks/av/camera/cameraserver/cameraserver.rc文件
service cameraserver /system/bin/cameraserver
class main
user cameraserver
group audio camera input drmrpc readproc
ioprio rt 4
writepid /dev/cpuset/camera-daemon/tasks /dev/stune/top-app/tasks
这个文件会在Android.mk文件里面编译到指定位置:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main_cameraserver.cpp
LOCAL_SHARED_LIBRARIES := \
libcameraservice \
libcutils \
libutils \
libbinder \
libcamera_client
LOCAL_MODULE:= cameraserver
LOCAL_32_BIT_ONLY := true
LOCAL_CFLAGS += -Wall -Wextra -Werror -Wno-unused-parameter
LOCAL_INIT_RC := cameraserver.rc #这里指定编译为LOCAL_INIT_RC
include $(BUILD_EXECUTABLE)
其中LOCAL_INIT_RC := cameraserver.rc这个LOCAL_INIT_RC在编译的时候,build/core/base_rules.mk会将这个文件直接拷贝到/system/etc/init目录下,
# Rule to install the module's companion init.rc.
my_init_rc := $(LOCAL_INIT_RC_$(my_32_64_bit_suffix))
my_init_rc_src :=
my_init_rc_installed :=
ifndef my_init_rc
my_init_rc := $(LOCAL_INIT_RC)
# Make sure we don't define the rule twice in multilib module.
LOCAL_INIT_RC :=
endif
ifdef my_init_rc
my_init_rc_src := $(LOCAL_PATH)/$(my_init_rc)
my_init_rc_installed := $(TARGET_OUT$(partition_tag)_ETC)/init/$(notdir
$(my_init_rc_src)) #这里指定的install路径就是/system/etc/init/目录
$(my_init_rc_installed) : $(my_init_rc_src) | $(ACP)
@echo "Install: $@"