Android7.1 [Camera] CameraService启动源代码分析

本文分析了Android 7.1中CameraService的启动流程,包括cameraserver.rc文件的编译与拷贝到system/etc/init目录,以及在系统启动过程中如何通过init进程和服务解析器启动cameraserver服务。
摘要由CSDN通过智能技术生成

源码平台: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: $@"    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值