Android P update_engine分析(二) -- update_engine_daemon的启动

上篇我们在update_engine启动时,分析了update_engine日志logging的启动和log文件的操作。这篇我们继续来研究update_engine_daemon的启动过程。因为updateEngineDaemon是继承brillo::Daemon的。从Daemon.Run()可以看到会调用onInit()函数。

int UpdateEngineDaemon::OnInit() {
   
   
  subprocess_.Init(this);
  //父类初始化
  int exit_code = Daemon::OnInit();
  //Binder初始化
  android::BinderWrapper::Create();
  binder_watcher_.Init();
  //DaemonStateAndroid的初始化
  DaemonStateAndroid* daemon_state_android = new DaemonStateAndroid();
  daemon_state_.reset(daemon_state_android);
  LOG_IF(ERROR, !daemon_state_android->Initialize())
      << "Failed to initialize system state.";
  //初始化BinderUpdateEngineAndroidService
  binder_service_ = new BinderUpdateEngineAndroidService{
   
   
      daemon_state_android->service_delegate()};
  auto binder_wrapper = android::BinderWrapper::Get();
  if (!binder_wrapper->RegisterService(binder_service_->ServiceName(),
                                       binder_service_)) {
   
   
    LOG(ERROR) << "Failed to register binder service.";
  }
  daemon_state_->AddObserver(binder_service_.get());
  //启动updater   
  daemon_state_->StartUpdater();  

updateEngineDaemon的onInit()里大致做了三件事情:1. 初始化DaemonStateAndroid 2. 初始化BinderUpdateEngineAndroidService 3.启动startUpdater.

初始化DaemonStateAndroid

bool DaemonStateAndroid::Initialize() {
   
   
  //初始化boot_control
  boot_control_ = boot_control::CreateBootControl();
  //创建硬件相关接口,主要以属性操作为主
  hardware_ = hardware::CreateHardware();
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值