Android 7.0 OTA升级(高通)
文章目录
- 1. Full OTA 方式升级介绍
- 1.1 Full OTA 制作第一步:生成 msm89xx-target_files-eng.XXX.zip
- 1.2 Full OTA 制作第二步:Modem 等非 HLOS 加入升级包的方法
- 1.3 Full OTA 制作第三步:生成 update.zip 升级包
- 2. Incremental OTA 方式升级介绍
- 2.1 Incremental OTA 制作第一步:生成各个版本的 msm89xx-target_files-eng. xxx.zip
- 2.2 Incremental OTA 制作第三步:生成 update.zip 升级包
- 3. OTA 升级操作步骤和方法
- 3.1 通过 Recovery 模式手动升级系统
- 3.2 通过 Android 接口 adb 命令方式升级
- 3.3 通过 Andorid 接口 apk 的方式升级系统
- 4. 对 img 文件进行升级
文档中主要描述 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: 安卓 8 之后的版本不支持 adb 命令升级,因为 data 分区加密
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 这里面存放的是开机动画,默认使用的都是我司的开机动画
修改点:
相关文章:
![](https://img-blog.csdnimg.cn/d54670353c4b42acb8b0ce7326b1e4c5.png#pic_center)
Android 7.0 OTA升级(高通)
文章目录1. Full OTA 方式升级介绍1.1 Full OTA 制作第一步:生成 msm89xx-target_files-eng.XXX.zip1.2 Full OTA 制作第二步:Modem 等非 HLOS 加入升级包的方法1.3 Full OTA 制作第三步:生成 update.zip 升级包2. Incremental OTA 方式升级介…...
![](https://www.ngui.cc/images/no-images.jpg)
工作负载之DeployMent
DeployMent 无状态工作负载(Deployment):即kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress等。 也是公司中应…...
![](https://www.ngui.cc/images/no-images.jpg)
淘宝tmall页面数据获取,API接口对接程序
item_get-获得淘宝商品详情请求参数请求参数:num_iid652874751412&is_promotion1参数说明:num_iid:淘宝商品IDis_promotion:是否获取取促销价响应参数Version: Date:2022-04-04名称类型必须示例值描述itemitem[]1宝贝详情数据num_iidBigint152081325…...
![](https://img-blog.csdnimg.cn/201497d45b2c4c29a4a2b17fd8adda22.png)
基于粒子群优化算法的电动汽车充放电V2G研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
![](https://img-blog.csdnimg.cn/img_convert/3cf21067dd7d3982fecceea5bd7bff3d.png)
java并发编程原理2 (AQS, ReentrantLock,线程池)
一、AQS: 1.1 AQS是什么? AQS就是一个抽象队列同步器,abstract queued sychronizer,本质就是一个抽象类。 AQS中有一个核心属性state,其次还有一个双向链表以及一个单项链表。 首先state是基于volatile修饰&#x…...
![](https://img-blog.csdnimg.cn/img_convert/350ca132924770fec1fea72e76fc5988.png)
研报精选230219
目录 【行业230219山西证券】煤炭行业周报:复工改善,港口价格企稳反弹【行业230219中航证券】农林牧渔行业周观点:一号文件落地,生物育种超势不改【行业230219华西证券】汽车行业周报:新车密集上市 自主转型提速【个股…...
![](https://www.ngui.cc/images/no-images.jpg)
【PPPoE】PPPoE拨号流程
简介 PPPoE(Point-to-Point Protocol over Ethernet)是一种在以太网上封装PPP协议的方式,常用于在宽带接入中进行拨号。 PPPoE的拨号原理如下: 客户端发起PPPoE Active Discovery Initiation (PADI)报文,广播到网络…...
![](https://img-blog.csdnimg.cn/80ac15a722444010a019ac08796fa812.png)
django项目实战(django+bootstrap实现增删改查)
目录 一、创建django项目 二、修改默认配置 三、配置数据库连接 四、创建表结构 五、在app当中创建静态文件 六、页面实战-部门管理 1、实现一个部门列表页面 2、实现新增部门页面 3、实现删除部门 4、实现部门编辑功能 七、模版的继承 1、创建模板layout.html 1&…...
![](https://img-blog.csdnimg.cn/d55f992349e04e89b1e084f8c242567d.png)
Lesson4---Python语言基础(2)
4.1 内置数据结构 4.1.1 序列数据结构(sequence) 成员是有序排列的每个元素的位置称为下标或索引通过索引访问序列中的成员Python中的序列数据类型有字符串、列表、元组 “abc” ≠ “bac” 4.1.1.1 创建列表和元组 Python中的列表和元组,…...
![](https://img-blog.csdnimg.cn/20190123171442110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzgwMTY5NQ==,size_16,color_FFFFFF,t_70)
NCHW - NHWC - CHWN 排列
TensorFlow有两种数据格式NHWC和NCHW,默认的数据格式是NHWC,可以通过参数data_format指定数据格式。这个参数规定了 input Tensor 和 output Tensor 的排列方式。 1、data_format 设置为 “NHWC” 时,排列顺序为 [batch, height, width, channels] 设置为 “NCHW” 时,排…...
![](https://img-blog.csdnimg.cn/91df8243fdb24972a5982dc15a41cb56.png)
2019蓝桥杯真题矩阵切割(填空题) C语言/C++
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正…...
![](https://img-blog.csdnimg.cn/436b07587c2d4349a1d3905b73fc685f.png)
Java线程池的创建以及原理
一、为什么要使用线程池 在外面的日常开发中,也使用了不少池化技术,比如线程池、数据库连接池、HTTP连接池等等都是对这个思想的应用。 池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资…...
![](https://img-blog.csdnimg.cn/748465798e58453e8f57689de2042986.png)
Java集合学习之Map
1.什么是Map Java里的Map接口是一个集合根接口,表示一个 键值对(Key-Value) 的映射。 简单来说就是键和值是一对的,每一个 Key都有唯一确定的 Value对应。 其中要求 键(Key) 唯一,因为是按照…...
![](https://img-blog.csdnimg.cn/81fcc8e1349444c5958d0c31ba37415c.png)
java 基于maven多模块合并打包部署
项目环境 jdk 1.8spring 2.7.xmaven 3.6 项目结构 模块功能 client – 对外service common – 共用工具切面等 main – 启动类 goods – 子模块具体实现 模块间依赖关系 client – 无依赖 common – 无依赖 main – client、common、goods goods – client、common 具体P…...
![](https://img-blog.csdnimg.cn/cc1298f0b2f640bba971490af16171b7.png)
Kubernetes是个什么东东?
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。 Kubernetes 这个名字源于希腊语,意…...
![](https://www.ngui.cc/images/no-images.jpg)
【go语言grpc之client端源码分析三】
go语言grpc之server端源码分析三newClientStreamnewAttemptLocked上一篇在介绍了grpc.Dial之后,然后再介绍一下后面的 //创建RPC客户端client : pb.NewGreetsClient(conn)//设置超时时间_, cancel : context.WithTimeout(context.Background(), time.Second)defer c…...
![](https://img-blog.csdnimg.cn/6c4d595660b14f2cabc5ddd2ca51dd16.png)
Android 基础知识4-2.6LinearLayout(线性布局)
一、LinearLayout的概述 线性布局(LinearLayout)主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能…...
![](https://img-blog.csdnimg.cn/img_convert/871f158f5d44065601df1aee0bdf3a53.png)
补充前端面试题(三)
图片懒加载<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…...
![](https://img-blog.csdnimg.cn/72ebfd7ded7b465e8bce7305ebcc014a.png)
.net开发安卓入门-自动升级(配合.net6 webapi 作为服务端)
文章目录思路客户端权限清单(AndroidManifest.xml)权限列表(完整内容看 权限清单(AndroidManifest.xml))打开外部应用的权限(完整内容看 权限清单(AndroidManifest.xml))添加文件如下…...
![](https://img-blog.csdnimg.cn/02fcd8f91c694326a6c6bdd1fb03f05b.jpeg)
分享111个HTML艺术时尚模板,总有一款适合您
分享111个HTML艺术时尚模板,总有一款适合您 111个HTML艺术时尚模板下载链接:https://pan.baidu.com/s/1sYo2IPma4rzeku3yCG7jGw?pwdk8dx 提取码:k8dx Python采集代码下载链接:采集代码.zip - 蓝奏云 时尚理发沙龙服务网站模…...
![](https://img-blog.csdnimg.cn/44143fb44b894b4bb1717d5b874d12a6.png)
spring之Spring AOP基于注解
文章目录前言一、Spring AOP基于注解的所有通知类型1、前置通知2、后置通知3、环绕通知4、最终通知5、异常通知二、Spring AOP基于注解之切面顺序三、Spring AOP基于注解之通用切点三、Spring AOP基于注解之连接点四、Spring AOP基于注解之全注解开发前言 通知类型包括&#x…...
![](https://img-blog.csdnimg.cn/7fd6c5e226c3428a8f6b5acc6171973e.png)
LeetCode题目笔记——6362. 合并两个二维数组 - 求和法
文章目录题目描述题目链接题目难度——简单方法一:常规双指针遍历代码/Python方法二:字典\哈希表代码/Python总结题目描述 给你两个 二维 整数数组 nums1 和 nums2. nums1[i] [idi, vali] 表示编号为 idi 的数字对应的值等于 vali 。nums2[i] [idi, …...
![](https://img-blog.csdnimg.cn/4731d2b22c4045b7b17735e78961340c.png#pic_center)
【C#基础】C# 常用语句讲解
序号系列文章3【C#基础】C# 数据类型总结4【C#基础】C# 变量和常量的使用5【C#基础】C# 运算符总结文章目录前言语句概念1,迭代语句1.1 for 语句1.2 foreach 语句1.3 while 语句1.4 do 语句2,选择语句2.1,if 语句2.2,else 语句2.3…...
![](https://img-blog.csdnimg.cn/f654987c4eb241aaa44c5acdb0f51671.png)
腾讯云——负载均衡CLB
负载均衡 CLB 提供四层(TCP 协议/UDP 协议/TCP SSL 协议)和七层(HTTP 协议/HTTPS 协议)负载均衡。您可以通过 CLB 将业务流量分发到多个后端服务器上,消除单点故障并保障业务可用性。CLB 自身采用集群部署,…...
![](https://img-blog.csdnimg.cn/dd4391959e9d49e1b4ad359c982a813a.png#pic_center)
6.关于系统服务的思考—— native vs java
文章目录native服务 以sensor service为例Native 服务java 服务, 以vibrate为例java 服务 以一个demo为例native服务 以sensor service为例 service启动 SystemServer.startBootstrapServices---->>>mSystemServiceManager.startService—>>>Sen…...
![](https://img-blog.csdnimg.cn/3c5bbbdd73a142468eb0b8c42830e9e9.gif#pic_center)
SQL语句创建视图:
前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍数据库中有关视图的知识,参考学校作业. 金句分享:…...
![](https://img-blog.csdnimg.cn/img_convert/3c3b759d646bf872ee20361b4cac0892.gif)
使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
![](https://img-blog.csdnimg.cn/4993447660ec46508427d72b00a04abc.png)
JavaWeb9-volatile解决内存可见性和指令重排序问题
目录 1.解决内存可见性问题 2.解决指令重排序问题 3.volatile缺点 4.特使使用场景 volatile(易变的,易挥发的,不稳定的)可以解决内存可见性和指令重排序的问题。 1.解决内存可见性问题 代码在写入 volatile 修饰的变量时&am…...
![](https://img-blog.csdnimg.cn/img_convert/53633ad25dfc6e62d318268d73880e78.jpeg)
Docker - 镜像操作命令
镜像名称一般分为两部分组成:[repository]:[tag]在没有指定tag时,默认是latest,代表最新版本的镜像1.下载docker镜像 docker pull repository:tag2.查看本地所有镜像 docker images3.创建镜像别名 docker tag repository:tag repository111:tag4.查看镜像…...
![](https://img-blog.csdnimg.cn/img_convert/9eaa0d8a886734b77f4fe0070566b2de.gif)
全栈之路-前端篇 | 第三讲.基础前置知识【前端标准与研发工具】学习笔记
欢迎关注「全栈工程师修炼指南」公众号 点击 👇 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! 涉及 企业运维、网络安全、应用开发、物联网、人工智能、大数据 学习知识 “ 花开堪折直须折,莫待无花…...
![](https://img-blog.csdnimg.cn/2021081723095970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JlbnNvbm9mbGpi,size_16,color_FFFFFF,t_70)
计算机网站建设招聘/移动网站优化排名
其他参考资料:自行车辐条编织方法(交叉编织)图文讲解 http://www.360doc6.net/wxarticlenew/448293547.html...
![](https://img-blog.csdnimg.cn/febdaf753bf2409eadc33ae3c330137e.png)
在网上做贸易哪个网站好/东莞关键词seo优化
环境: Win10 专业版 KONICA MINOLTA 287SeriesPCL 问题描述: 一楼电脑可以打印文件,二楼电脑访问不了打印机 两楼网段之间可以互访,在一楼可以ping通打印机,二楼电脑访问不了打印机 解决方案: 1.检查…...
简述企业网站建设的主要步骤/免费域名注册永久
云和恩墨大咖系列报道 2019数据技术嘉年华于11月16日在京落下了帷幕。大会历时两天,来自全国各地上千名学术精英、数据库领袖人物、数据库专家、技术爱好者在这里汇聚一堂,围绕“开源 • 智能 • 云数据 - 自主驱动发展 创新引领未来”的大会…...
![](https://img-blog.csdnimg.cn/be60423dfd9f4ef8b8cb9836b82e7905.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a-S5bGx6YGT5p2z,size_20,color_FFFFFF,t_70,g_se,x_16)
ui设计师个人优势/杭州seo排名优化
一、网络编程为什么需要进行消息定界 封帧一般是指在一段数据的前后分别添加首部和尾部,以此形成数据帧。对数据帧而言,首部和尾部的重要作用之一,就是可以对消息进行定界。因此封帧的本身就是消息定界中的一种方式。那么我们为什么要对消息进…...
![](https://img-blog.csdnimg.cn/931571665af143c8a82e55b0127ddc74.png#pic_center)
哪个女装网站做的好/宁波seo推广费用
使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12201821.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 消消乐游戏 游戏规…...
![](https://img-blog.csdnimg.cn/img_convert/ef5ab4f29c5eac9a88a63b0522210efa.png)
建设免费网站模板/seo发帖软件
在所有网络通信协议中,protobuf协议可以说最优秀的,封装的字节流最少(减少前后端io流的量),解析速度也是最快的(提交了服务器响应速度),跨语言方面也是很强大的,现在几乎所有的编程语言都支持它。但是也是通信协议中最…...