- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android recovery
Android OTA升级过程的学习 目录 1.Android升级的三种模式 2.OTA与本地升级的流程 3.Recovery 4.全包升级与差分升级 5.双备份升级 6.升级过程断电问题 一、Android升级的三种模式 1.1 android系统的三种启动模式 1.在uboot 通过组合键进入bootloader的fastboot。 2.在uboot 通过组合键或者读取MISC分区的command进入recovery模式。 3.正常启动模式 一、Android升级的三种模式 1.2 android系统的三种升级模式 1.fastboot模式 通过uboot进入bootloader的fastboot模式,通过USB将底包数据写入FLASH。 2.本地升级 通过应用层升级APK将升级信息写入MISC分区的bootloader_message数据结构中。 3.OTA升级 将升级服务器的升级包下载到本地,再通过本地升级的方式进行升级。 二、OTA与本地升级的流程 2.1OTA与本地升级的流程需要整个软件平台的配合,主要有三个部分。 1.MainSystem:在重启进入Recovery模式之前,会向cache分区的recovery目录写入升级信息和MISC分区BCB结构写入命令,以便在重启后告诉bootloader进入Recovery模式。 2.Recovery:系统进入Recovery模式后会装载Recovery分区,该分区包含recovery.img(同boot.img相同,包含了标准的内核和根文件系统)。进入该模式后主要是运行Recovery服务(/sbin/recovery)来做相应的操作(重启、升级update.zip、擦除cache分区等)。 3.Bootloader:除了正常的加载启动系统之外,还会通过读取MISC分区(BCB)获得来至Main system和Recovery的消息。 二、OTA与本地升级的流程 2.2升级过程流程 1.Upgrade 的升级过程 2.Upgrade 的通讯过程 三、Recovery 1.recovery.img启动的初始配置 也是启动内核,然后启动文件系统。在进入文件系统后会执行init,init使用配置文件/init.rc进行初始配置。 #设置环境变量 #建立etc连接 #新建目录 #挂载/tmp为内存文件系统tmpfs #启动recovery(/sbin/recovery)服务 #启动adbd服务(用于调试) 三、Recovery 2. recovery服务 recovery服务是Recovery启动模式中最核心的部分。它完成Recovery模式所有的工作。 1.ui_init():Recovery服务使用了一个基于framebuffer的简单ui。 2.get_arg():获取Main system 传递给Recovery服务参数 3.parserargc/argv:解析我们获得参数。 4.根据参数分析的结果,进一步分析是否升级,是否wipe等。 5.如果安装失败执行: prompt_and_wait()待用户处理。 6.安装成功执行: finish_recovery(),清除参数,以及备份升级log到cache分区。 7.reboot. 三、Recovery 2.recovery服务的核心install_package. 1.ensure_path_mount():先判断所传的update.zip包路径所在的分区是否已经挂载。如果没有则先挂载。 2.load_keys():加载公钥源文件,路径位于/res/keys。这个文件在Recovery镜像的根文件系统中。 3.verify_file():对升级包update.zip包进行签名验证。 4.mzOpenZipArchive():打开升级包,并将相关文件信息拷贝到一个临时的ZipArchinve变量中。 5.try_update_binary():在这个函数中才是对update.zip升级的地方。 6.pipe():创建管道,用于下面的子进程和父进程之间的通信。 7.fork():创建子进程。 8.父进程通过pipe接收升级过程信息并显示,等待子进程退出。 三、Recovery 3.升级程序update_binary的执行过程 1.函数参数以及版本的检查:当前updater binary API所支持的版本号有1,2,3这三个。 2.获取管道并打开:在执行此程序的过程中向该管道写入命令,用于通知其父进程根据命令去更新UI显示。 3.读取updater-script脚本:从update.zip包中将updater-script脚本读到一块动态内存中 4.Configure edify’s function
您可能关注的文档
最近下载
- Unit 4 The Earth 大单元教学设计 2025沪教牛津七年级英语上册.docx
- 江苏开放大学管理学060935过程性考核作业(二).docx VIP
- 2025在线网课《信息检索与科技写作( 理大)》单元测试考核答案.pdf VIP
- power up1英语书单词表.docx VIP
- 4.2按劳分配为主体+多种分配方式并存课件(共18张PPT)中职高教版(2026)中国特色社会主义.pptx VIP
- 钢拱架支护操作规程.docx VIP
- 镁法脱硫技术方案.docx VIP
- 人体生物电现象.ppt VIP
- JB T 10192-2012小型焚烧炉技术条件.docx VIP
- 02R111 小型立、卧式油罐图集(OCR).pdf VIP
文档评论(0)