首页 > 编程知识 正文

怎么用ota升级安卓系统(ota升级原理)

时间:2023-05-06 03:47:28 阅读:74841 作者:3867

转自: http://www.Xue buyuan.com/631753.html

这篇文章的页面很好。 参考: http://LHC 180.blog.51cto.com/316940/757378

这篇报道的页面写得很好。 http://blog.csdn.net/mu 0206 mu/article/details/7399822

安卓操作系统介绍

OTA全名over the air,OTA升级是安卓系统提供的标准软件升级方式。

提供完全升级、增量升级模式,可以使用SD卡升级,也可以在中升级

网络升级。

在此,首先说明SD卡的升级。 网络升级的原理和SD卡差不多。 这里介绍一下这个过程。

在升级之前,准备一个升级包。 所有编译的软件包都名为update.zip

即使是增量升级

是完全的升级。

1 .生成完整的升级包。

./mk prj new

./mk prj otapackage

编译完成后,将在outtargetproductprj目录中生成prj-ota-eng.root.zip。 这是

zip将是我们升级的软件包。 我们将他改名为update.zip,并将其复制到SD卡的根目录下。

执行上述命令的同时

outtargetproductprjobjpackagingtarget _ files _ intermediates

在目录中生成名为prj-target_files-eng.root.zip的文件非常重要,我们将他另存为old.zip

这是我们制作增量包的基础文件。

2 .生成增量包。

到时候更新新代码。 同样执行。 /mk prj otapackage将在代码更改后生成完整的升级包。

同样,在outtargetproductprjobjpackagingtarget _ files _ intermediates 目录中生成

将prj-target_files-eng.root.zip重命名为new.zip,然后完成生成增量包的最后一步。

./build/tools/release tools/OTA _ from _ target _ files -运行iold.zip new.zip diff.zip并生成new.zip

您可以前往old.zip增量包diff.zip,同样将其命名为update.zip,然后将其复制到SD卡的更目录中进行增量

使用公式升级。

备注如果对:升级有特殊要求,例如,格式化数据分区、更新分区(如uboot )需要修改脚本ota_from_target_files.py )

以上内容介绍了如何准备update.zip升级文件。 接下来介绍升级过程。 首先说明通常的启动过程

按power键打开电源时,uboot运行后将boot分区的内容boot.img文件加载到内存中,然后跳转到boot

linux内核的开始位置,运行linux内核代码,在内核末尾运行正常启动时的init.rc

文件,装载系统分区

在/system目录下,将data分区挂载到/data目录下。 启动虚拟机等相关服务。

要升级,必须在打开电源时按电源键和vol键,然后uboot在运行后加载恢复分区

的recovery.img文件发送到内存中。 现在,我们来看看recovery.img

这个镜像里有什么内容? 详细内容是我们

可以查看build/core/makefile文件。 在此文件中查找恢复图像。 接下来的内容主要是

这是将recovery.img打包的内容。 关于recovery.img的具体内容,简而言之,就是linux内核和将来outtarget

productprjrecovery目录打包在ramdisk的镜像集合中。 与通常启动的boot.img镜像相比,区别于boot.img

中的ramdisk镜像已用outtargetproductprjroot打包。 那个内核文件是同一个文件. recovery.img

镜像的ramdisk文件系统包含与数据升级(如gzip和恢复)相关的lyy文件的重要程序。

计算机加载recovery.img并运行内核后,在bootablerecoveryetc上运行恢复模式的init.rc文件

在目录下,与成功启动的init.rc文件进行比较。 recovery模式的init.rc只是创建了几个包含sd卡的新目录。

SD卡的挂载点。 启动了两个服务、一个事件和一个恢复的主菜单程序恢复。 此文件是用bootablerecoveryrecovery.c编程的。 内容非常简单。 在恢复主界面上

解压缩update.zip文件,然后运行 meta-INFcomGoogleAndroidupdater-script。 recovery解析脚本。

以下是这个脚本的摘录。

show _ progress (0.500000,0 );

格式(yaffs2)、(MTD )、(system );

mount(yaffs2)、(MTD )、(system )、)/system );

ack age _ extract _ dir (“恢复”,“/系统”);

package_extract_dir('system ','/system ' );

symlink (工具箱)、(/system/lyy/cat )、)/system/lyy/chmod )、

'/system/lyy/chown ','/system/lyy/cmp ','/system/lyy/date ',

.

'/system/lyy/wipe ';

set _ perm _ recursive (0,0,0755,0644,'/system ';

.

show _ progress (0.200000,10 );

assert (package _ extract _ file (boot.img,)/tmp/boot.img )、

write_raw_image('/tmp/boot.img ',' boot ' )、

delete((/tmp/boot.img ) );

show _ progress (0.100000,0 );

unmount ()/system );

(上述脚本是系统的自动生成)

从脚本中可以看到,首先设置系统分区的格式,然后将updata.zip中系统目录的内容解压缩到系统中

分区.然后更改system分区下文件的权限。 最后,将boot.img镜像写回boot分区。

通过以上介绍,可以看到android的功能非常强大,在恢复模式下linux完全运行

起床了。 除了apk、jar不能执行以外,你可以做任何想做的事情。 在上例中,我们更新了系统分区

也可以更新和boot分区,如有必要,还可以更新uboot分区、徽标分区、格式数据分区等。

对于OTA的网络实现,实际上是检查网络上的更新,或者网络通知更新。 将更新包(update.zip )添加到

本地下载,在用户选择下重新启动计算机并自动进入恢复模式,然后执行上述过程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。