在介绍完了DownloadAction之后,还剩下FilesystemVerifierAction和PostinstallRunnerAction,下面开始对其进行分析. FilesystemVerifierAction 在数据下载完成后,在DownloadAction中会切换到FilesystemVerifierAction void DownloadAction::TransferComplete(HttpFetcher* fetcher, bool successful) { if (wr…
在update_engine-DownloadAction(一)中对DownloadAction介绍到了DeltaPerformer的Write方法.下面开始介绍Write方法. src/system/update_engine/payload_consumer/delta_performer.cc bool DeltaPerformer::Write(const void* bytes, size_t count, ErrorCode *error) { *error = ErrorCode:…
在update_engine-整体结构(二)中分析到了Action,那么我们接着继续分析. 首先来看一下BuildUpdateActons(...)这个方法. src/system/update_engine/update_attempter_android.cc void UpdateAttempterAndroid::BuildUpdateActions(const string& url) { CHECK(!processor_->IsRunning()); processor_-&g…
在update_engine-整体结构(一)中分析UpdateEngineDaemon::OnInit()的整体情况.下面先分析在该方法中涉及的DaemonStateAndroid和BinderUpdateEngineAndroidService. DaemonStateAndroid 它的继承关系为 aemonStateInterface中的成员函数都是纯虚函数,在这种情况中可以认为和java中的接口一样,所以在这里使用的是实现的关系,同时也只列出了较为重要的方法.UpdateEngineDa…
通过update_engine-整体结构(一),(二),(三)对update_engine整体的运行机制有了一定的认识之后.开始逐个分析重要的Action.先从DownloadAction开始分析. 开始分析DownloadAction src/update_engine/payload_consumer/download_action.cc DownloadAction::DownloadAction(PrefsInterface* prefs, BootControlInterface* b…
update_engine简介 update_engine是A/B升级的核心逻辑.理解了update_engine就理解了在Android系统中A/B升级是如何运行的.它的代码放在源码目录下system/update_engine/下.那么接下来对update_engine进行分析,首先会分析它的结构,之后分析它的核心操作. update_engine结构分析 Android.mk分析 一个源码工程中包含的源文件会有很多,但是不代表所有的文件都和我们的目标相关.而通过Android.mk文件可以…
上一篇请参考<Android init介绍(上)> 5. AIL 在init启动过程中,系统服务等均是通过解析rc文件来启动,而rc文件则是由Android初始化语言(Android Init Language)的脚本写成 5.1 格式介绍 AIL以Section为区分,由如下import.action和service三类Section 5.1.1 import section 主要用于导入其他rc文件 import <path> 上面的命令将导入path指定的文件然后被解析为ac…
本文转载自:https://blog.csdn.net/guyongqiangx/article/details/71334889 Android从7.0开始引入新的OTA升级方式,A/B System Updates,这里将其叫做A/B系统. 版权声明: 本文为guyongqiangx原创,欢迎转载,请注明出处: Android A/B System OTA分析(一)概览: http://blog.csdn.net/guyongqiangx/article/details/71334889 A…
程序员应该了解一个基本问题:我的程序使用了多少内存?这可能是一个简单的问题,但是对于像Linux这样的虚拟内存操作系统,答案是相当复杂的,因为top和ps给出的数字不能简单相加.进程中两个最常见的内存信息指标是虚拟集大小(Vss)和常驻集大小(Rss),可以在ps和top指令查看到这些参数: Vss 也叫 VIRT / VSZ,是虚拟内存总量的映射,不管它是否被提交到物理内存. Rss 也叫 RES / RSS,是物理内存总量的映射,只要页面在自己的区间内被映射过,就算在自己的头上.例如/lib…