文档章节

Android OTA 差分包升级

l
 lxp198837
发布于 2012/06/20 10:54
字数 817
阅读 7.9K
收藏 3

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

之前做的差分包升级任务,期间调查并遇到的问题,总结分享一下,备用:)

根目录下两个命令:

1、make ——会生成系统的img文件,system.img,boot.img,userdata.img,recovery.img

2、make otapackage——会生成sd卡用的全部系统升级包,如msm8660_surf-target_files-eng.xxxx.zip

 

要生成差分升级包,需要先作出两个全升级包,然后根据这两个升级包做出差分升级包

1、制作全系统升级包

source目录下:. build/envsetup.sh(.后有空格)

choosecom 1 1 7 eng

make

make otapackage(或m otapackage)

2、在用户名下建立一个目录,这个随意,在哪里建都行

mkdir ~/OTA 

3、将编译生成的out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷贝并且更名放到目录~/OTA/msm8660_surf-target_files-eng.A.zip

4、在代码中做一些修改,

5、第二次make;make otapackage

6、第二次编译生成的out/target/product/msm8660_surf/obj/PACKAGING/target_files_intermediates/msm8660_surf-target_files-eng.xxxx.zip 拷贝并且更名放到目录/OTA/msm8660_surf-target_files-eng.tangzm_B.zip

7、在src根目录下执行制作差分包的命令,必须在src根目录下执行,因为ota_from_target_files.py这个脚本里面写定了相对路径的引用文件。

./build/tools/releasetools/ota_from_target_files -x pagesize=xxxx -k xxxx -d MMC -i <A包> <B包>  <差分包名>。

如: ./build/tools/releasetools/ota_from_target_files -x pagesize=4096 -k ~/project/build/target/product/security/testkey -d mmc -v -i ~/OTA/msm8660_surf-target_files-eng.tangzm_B.zip ~/OTA/msm8660_surf-target_files-eng.tangzm_B.zip ~/OTA/update.zip

 

~/OTA/update.zip  就是升级用的差分包。

 

注:

在源码根目录下采用步骤7中命令格式( ./build/tools/releasetools/ota_from_target_files -x pagesize=xxxx -k xxxx -d MMC -i <A包> <B包>  <差分包名>。)不好用,因为我的是厂家自定义编译脚本,需要用到外部.py文件,所以修改了build/core/Makefile文件,该文件中默认好像执行./build/tools/releasetools/ota_from_target_files生成FullOtaPackage,我在调用位置采用步骤7命令格式保存修改,编译,根据log显示看到能够进行A、B包的差分比较。

-x pagesize=4096 是设置pagesize的大小,因为执行程序的过程中需要这个参数,否则会报错keyerror。                      还有一种情况不加-x,编译时出现keyerror错误,可能是引用外部key-value时,key不存在导致(如:keyerror:'/recovery'),我编译时折腾了一天,原因是编译脚本是厂家自定义,里面包含android系统既存编译命令m otapackage,在自定义的脚本中键值对为(recovery,recovery),而在调用build/tools/releasetools/ota_from_target_files中函数时传的参数为"/recovery"。
-k 是在签名的时候会用到的信息,不过貌似不加也可以成功,因为后面会执行java命令进行签名
-d mmc 是指使用文件格式为ext4,默认为mtd,即yaffs2。因为我们这个系统使用了ext4文件系统的支持

-v 显示具体命令

-i A.zip B.zip Update.zip 为产生增量包,后面跟着源文件和差分包的路径名称

不明确的话 ,可以直接打开ota_from_target_files 里面有各个命令的说明。

这个脚本被build/core/Makefile调用,因为Makefile中有引用外部变量所以不用特别设置,但是直接执行这个脚本则要设置import相关信息,好像很麻烦,还是用build/core/Makefile调用来的方便

© 著作权归作者所有

l
粉丝 3
博文 30
码字总数 1087
作品 0
大连
私信 提问
加载中

评论(4)

学者bo

引用来自“踩小强”的评论

博主我make otapackage出现make:no rule to make target otapackage。
我去makefile里看,里面include build/core/main.mk ,但是main.mk里面就没有otapackage这个target。求解。

兄弟,你的这个问题解决了吗?我也遇到了,如若解决了还望赐教啊
学者bo
博主你好!我用android2.3代码通过make target-files-package先后做出了zip包,但我用脚本对这两个zip包生成update.zip的时候遇到跟你类似的情况,就是KeyError: '/system',我通过-k什么的指定key都试过了,还是出这个问题,请博主给分析一下。。。。
l
lxp198837 博主

引用来自“踩小强”的评论

博主我make otapackage出现make:no rule to make target otapackage。
我去makefile里看,里面include build/core/main.mk ,但是main.mk里面就没有otapackage这个target。求解。

生成差分包,首先确保在source目录下执行make
其次看看makefile文件中类似
.PHONY: otapackage
otapackage: $(INTERNAL_OTA_PACKAGE_TARGET)
找不到INTERNAL_OTA_PACKAGE_TARGET。
其他没想到,你可以再研究一下。
fancyTest
fancyTest
博主我make otapackage出现make:no rule to make target otapackage。
我去makefile里看,里面include build/core/main.mk ,但是main.mk里面就没有otapackage这个target。求解。
Android 系统System/应用App OTA升级

-- Android系统OTA升级流程,Android App OTA升级; 公司的车载系统使用了MTK的板子,深度定制的Android系统,平时开发过程中的修改可以直接重新烧录固件,但设备量产投入市场之后的修改只能通...

desaco
2019/05/09
0
0
Android OTA开发者做好的差分包是怎么通过服务器传到用户手机上的?

@雨焰 你好,想跟你请教个问题:最近在学习Android OTA升级,在网上查到的都是差分包的制作,以及用户手机得到差分包后的升级逻辑。我不太明白开发人员制作好升级包后,上传到服务器,服务器...

桃子_tao
2015/09/25
517
1
Android ota update

小弟目前正在做Android差量升级,哪位大哥大姐做过或者对此比较熟悉的请指点一下了?主要是制作查分包这块有点迷糊?万分感谢!!!

lancy_android
2012/10/31
531
1
Android OTA差分包升级失败

The hash of the source data on disk for this operation doesn't match the expected value. This could mean that the delta update payload was targeted for another version, or that ......

Ansen360
03/31
0
0
Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...

Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相隔的时间也比较长...

lxp198837
2012/06/26
1.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

IP地址正则表达式

提取一段内容中的所有IP地址 ((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})){3} 判断字符串是否是IP地址 ^((2(5[0-5]|[0-4]d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4......

哆啦D梦幻
22分钟前
29
0
CDH在yarn上运行程序乱码

参考文章:CDH在yarn上运行程序乱码 安装完成CDH后,在yarn上不管是使用hive运行mapreduce还是spark,中文全都会乱码。 1. linux的环境变量设置字符集 vi /etc/profile export LANG=zh_CN.UT...

osc_40usjisk
22分钟前
9
0
公积金无租房备案提取如何办理?(以成都为例)

  无租房备案是什么?   首先你要知道租房备案是什么?简单来说就是房东想要对外租房,需要到房管局办理相关手续,   如果你要以租房的名义提取公积金需要提供与房东签订的合同等材料后...

osc_3aqbiyys
22分钟前
11
0
公积金状态封存怎么解封?

  前言   公积金的缴存状态一般有2种,正常和封存,如下截图         公积金状态为封存是什么意思?   指职工因为各种原因导致住房公积金缴存中断,其住房公积金账户无法转移且又...

osc_51airx3z
23分钟前
9
0
你应该知道的公积金基础知识科普

  公积金是什么?   简单来说公积金全称为住房公积金,是一种国家法律规定的住房保障制度,也是普通工薪族的一种福利   公积金的用途?   可用于贷款买房,租房,还房贷,房屋大修等...

osc_u9wft6hh
25分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部