Android 7.0 OTA升级(高通)_ota 升级包 /sdcard/data/-程序员宅基地

技术标签: OTA升级  ota  

文档中主要描述 Full OTA 升级和 Incremental OTA 两种升级方式

1. Full OTA 方式升级介绍

Full OTA 升级就是对整个下载包做打包,然后将完整的升级包通过 recovery 系统升级。操作步骤如下 说明。
升级对象:boot.img,cache.img, system.img, emmc_appsboot.mbn, persist.img, non-hlos.bin, sbl1.mbn, tz.mbn, rpm.mbn,整体来说,可以通过 ota 升级除 userdata 分区之外的分区。

1.1 Full OTA 制作第一步:生成 msm89xx-target_files-eng.XXX.zip

关于制作 OTA升级所用资源包,使用命令 make dist 命令打包 img 和 OTA资源包,手动执行命令
source build/envsetup.sh
lunch
make –j8 dist
在\out\dist\目录下会有手动制作OTA包所需的msmXXXX-target_files-eng.quectel.zip和已经做好的完整 包 msmXXXX-ota-eng.quectel.zip;
P.s 目前 make dist 命令 不支持 Android5 和 Android6 的平台,Android7 以下平台,请使用如下编译 命令:
make –j8 otapackage

1.2 Full OTA 制作第二步:Modem 等非 HLOS 加入升级包的方法

关于添加 modem 等非 ap 分区,有两种方法:
方法 1.官方,也就是高通给出的方案是这样的:
Create a folder named RADIO in the path /device/qcom// and add the non-HLOS files (non-hlos.mbn, tz.mbn, rpm.mbn, etc.) that must be upgraded into this folder. 则首先需要查看 device/qcom/msm89XX 目录下是否已存在 radio 这个文件夹,若没有则创建一个:

在这里插入图片描述

通常这个文件默认已经存在,所以我们在编译版本时只要将非 AP 部分加入到这个文件夹中就可以了。 比如我们可以先将 modem 部分加入到这里:
cp (modem 所在路径) ./device/qcom/msmXXXX/radio 的
该文件夹中默认包含 filesmap 文件 如下:

在这里插入图片描述
这个名为 filesmap 的文件内容是这样的:

在这里插入图片描述
这个文件主要定义了对应放入的文件名称和其相应的分区。
添加完后编译生成整包(请参考 2.1):
out/target/product/msmXXXX/obj/PACKAGING/target_files_intermediates 目录下的整包原始文件中:

在这里插入图片描述方法 2:当我们编译了版本,生成了:
out/target/product/msmXXXX/obj/PACKAGING/target_files_intermediates/XXX.zip 这几个文件后
我们可以通过手动将modem 等非 AP 部分文件放入 msmXXXX-target_files-eng.xxxx.zip 压缩包中的 RADIO 文件中

1.3 Full OTA 制作第三步:生成 update.zip 升级包

./build/tools/releasetools/ota_from_target_files --block -p out/host/linux-x86/ -k build/target/product/secur ity/testkey -v out/target/product/msm8909/obj/PACKAGING/target_files_intermediates/msm8909-target_files-en g.smart-jenkins.zip update.zip
在这里插入图片描述

2. Incremental OTA 方式升级介绍

Incremental OTA 升级就是针对两个版本,通过工具生成 Incremental 包,做 Incremental 升级的方案。 所以注意要有版本升级对应关系。
升级对象:boot.img, emmc_appsboot.mbn, non-hlos.bin, sbl1.mbn, rz.mbn, rpm.mbn ….

2.1 Incremental OTA 制作第一步:生成各个版本的 msm89xx-target_files-eng. xxx.zip

假设我们编译了版本 V1.

在编译完成后的 out/target/product/msm89xx/obj/PACKAGING/target_files_intermediates 目录下,会自动 生成这个版本的整包压缩文件:msm89xx-target_files-eng.XXX.zip(可能名字会有所区别)

在这里插入图片描述

然后我们修改编译 V2 版本,这个版本相对 V1 版本做了一些修改

source build/envsetup.sh
lunch msm8909-userdebug
make dist -j8

在这里插入图片描述

2.2 Incremental OTA 制作第三步:生成 update.zip 升级包

烧写第一版本的系统包(system.img)必须要从 out/dist 目录下的 msm8909-img-eng.zyz.zip 解压出来, 替换 out/target/product/msm8909/system.img

进入工程目录中,执行:
./build/tools/releasetools/ota_from_target_files -v --block -p out/host/linux-x86/ -k build/target/product/sec urity/testkey -i out/target/product/msm8909/obj/PACKAGING/target_files_intermediates/msm8909-target_files-e ng.smart-jenkins.zip out_1/target/product/msm8909/obj/PACKAGING/target_files_intermediates/msm8909-target_files-eng.smart-jenkins.zip update_c.zip

在这里插入图片描述
-i 为产生增量包;
P.s 其余选项 FULLOTA 中已介绍。

在这里插入图片描述

生成差分包的包字可以任意为什么名字,和之前的整包做一个区分

3. OTA 升级操作步骤和方法

3.1 通过 Recovery 模式手动升级系统

这个刷机包拷贝到 sd 卡中。通过 adb reboot recovery 方式重启进入 recovery 模式进行升级; SC20/SC60 默认情况通过 PWRKEY 开机+ 同时 VOL_UP 拉低 进入 Recovery 界面。

在这里插入图片描述

3.2 通过 Android 接口 adb 命令方式升级

安卓提供了接口给我们来进行升级。
首先通过
adb root
adb push update.zip /data/update.zip
将升级包导入手机,这个步骤,到时候我们就可以直接通过 apk 下载升级包到/data/ 目录或 /cache 目 录或 SD 下。
接下来我们在 cache 目录下创建 recovery 文件夹:
adb shell “mkdir /cache/recovery”
然后在 recovery 目录下创建文件 command
adb shell “touch /cache/recovery/command”
下一步就是往 command 这个文件中写入:
adb shell
echo “–update_package=/data/update.zip” > /cache/recovery/command
sync
最后我们重启到 recovery,系统就会自动进行更新了:
adb reboot recovery

PS:–update_package是两个-

adb root
adb push- p update.zip /data/ota_package/update.zip
adb shell uncrypt /data/ota_package/update.zip /cache/recovery/block.map
adb shell “echo”–update_package=@/cache/recovery/block.map" > /cache/recovery/command"
adb reboot recovery

在这里插入图片描述

3.3 通过 Andorid 接口 apk 的方式升级系统

通过上层 java 接口升级,主要使用如下两个 andorid 的标准接口:

在这里插入图片描述

4. 对 img 文件进行升级

例:对 splash.img 文件进行升级
splash.img 这里面存放的是开机动画,默认使用的都是我司的开机动画
修改点:

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wxd_csdn_2016/article/details/129098198

智能推荐

[C/C++ -STL]vector底层实现机制刨析-程序员宅基地

文章浏览阅读7.2k次,点赞17次,收藏30次。一、vector底层实现机制刨析通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的:其中statrt指向vector 容器对象的起始字节位置;finish指向当前最后一个元素的末尾字节end_of指向整个 vector 容器所占用内存空间的末尾字节。如图 演示了以上这 3 个迭代器分别指向的位置如图 演示了以上这 2个迭代器分别指向的位置在此基础上,将 3 个迭代器两两结合,还可以表达不同的含义,例如:start 和 finish 可以用来表_vector底层实现

搭建5个节点的hadoop集群环境(CDH5)-程序员宅基地

文章浏览阅读1.9k次。提示:如果还不了解Hadoop的,可以下查看这篇文章Hadoop生态系统,通过这篇文章,我们可以首先大致了解Hadoop及Hadoop的生态系统中的工具的使用场景。搭建一个分布式的hadoop集群环境,下面是详细步骤,使用cdh5 。一、硬件准备基本配置:操作系统64位CPU(英特尔)Intel(R_cdh5

fxfactory卸载不干净?Fxfactory及插件卸载教程_fxfacory的插件有时候能用有时候用不了-程序员宅基地

文章浏览阅读432次。fxfactory是一款非常受欢迎的视频特效插件合集,能应用到FCPX、AE、PR、motion等软件中。过多特效插件下载会导致这些软件运行打开速度慢,那么如何卸载fxfactory这款软件或者删除那些特效插件呢?跟随小编一起来看看吧!fxfactory中插件删除教程打开fxfactory 软件,在Installed处找到已经安装过的插件,比如安装好的Caption Burner插件去掉勾选,插件颜色变黑白即可运行FCPX、AE、PR、motion等软件,Caption Burner就不会出现了,影响软件_fxfacory的插件有时候能用有时候用不了

Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)_ms-dos七天自动删除-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏41次。Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)在生活中和工作中有时候为了避免电脑宕机导致文件丢失常常会使用一些方式去备份文件,今天小编给大家介绍一个方法,用于自动备份指定文件,并删除N天前的文件。_ms-dos七天自动删除

计算机科学创新大赛,全国青少年科技创新大赛-程序员宅基地

文章浏览阅读761次。全国青少年科技创新大赛China Adolescents Science & Technology Innovation Contest翰林青创赛战绩2020年计算机(选送全国)一等奖 1名计算机二等奖 1名化学二等奖 1名三等奖若干2019年数学一等奖 1名二等奖 1名三等奖若干项目介绍全国青少年科技创新大赛(China Adolescents Science & Tech..._青少年科技创新大赛计算机科学与信息技术

STM32CUBEMX学习笔记——陶晶驰串口屏中断接收数据_陶晶瓷串口屏怎么接收-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏26次。网上很多串口屏的开发都是基于标准库开发的,我本人接触到的开发模式是CUBEMX,两种开发环境导致很多资料之间有点割裂,因此我将自己之前学习标准库的开发方式利用CUBEMX实现的方法写在这,防止自己忘记。开发环境还是之前做的项目,以一个按钮为例通过这个按钮学习串口屏的通讯 。b4和b6还需要按下一秒后连续改变h1和n1的数值,因此顺便回顾一下如何实现:b4的按下事件中加入定时器,如果连续1000ms就进入使能:tm2.tim=1000tm2.en=1使能后就在定时器模块中:t_陶晶瓷串口屏怎么接收

随便推点

清空数据库的方法_548数据库清库-程序员宅基地

文章浏览阅读744次。近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.1.搜索出所有表名,构造为一条SQL语句declare @trun_name varchar(8000)set @trun_name=''select_548数据库清库

STL --- 四、算法 Algorithms_c++ algorithms-程序员宅基地

STL中的算法提供了丰富的功能,包括常用算法介绍和时间、空间复杂度的选择。在编写程序时需根据具体问题选择适当的算法,满足时间或空间需求。

【计算机网络学习笔记04】网络体系架构与网络协议_网络体系以及网络协议的定义和内容。-程序员宅基地

文章浏览阅读1.4w次。【计算机网络学习笔记04】网络体系架构与网络协议一、网络协议的概念和要素网络协议是计算机网络相互通信的对等层实体之间,用来交换信息时必须遵守的规则或约定的集合。这些为网络数据交换而制定的通信规则、约定与标准被统称为网络协议,简称协议。网络协议主要由三个基本要素组成,分别是语法、语义和时序。语法:用于定义数据和控制信息的结构或格式。语义:用于解释数据或控制信息的具体含义。时序(同步):用于对事件实现顺序的详细说明。二、计算机网络体系结构计算机网络各层、层中协议以及层间接口的集合(即网络层次_网络体系以及网络协议的定义和内容。

【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包_shell脚本接收udp-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏14次。目录通过/dev/tcp、/dev/udpshell给tcp或udp服务发送16进制报文指令通过/dev/tcp、/dev/udp(https://blog.csdn.net/u010039418/article/details/86251470)通过/dev/tcp、/dev/udp可以直接在shell脚本中发起tcp、udp连接,方便又高效,平时用于测试啥的还是挺方便的。直接发送格式 /dev/udp/ip/port比如要向本地10001端口发送数据,可以使用ec._shell脚本接收udp

Pytorch学习笔记09——多分类问题_pytorch normalize mean, std-程序员宅基地

文章浏览阅读639次,点赞2次,收藏5次。pytorch多分类问题_pytorch normalize mean, std

学习open62541 --- [15] 使用建模工具UaModeler-程序员宅基地

文章浏览阅读1.2w次,点赞120次,收藏55次。讲述如何使用建模工具UaModeler_uamodeler

推荐文章

热门文章

相关标签