文档章节

Android OTA 差分包升级

l
 lxp198837
发布于 2012/06/20 10:54
字数 817
阅读 3785
收藏 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 OTA开发者做好的差分包是怎么通过服务器传到用户手机上的?

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

桃子_tao
2015/09/25
418
1
Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...

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

lxp198837
2012/06/26
0
0
开源 Android App 增量更新库 版本升级

开源 Android App 增量更新库 版本升级 经过几天的重构,我将之前写的一个Android 应用增量更新的示例程序重构为了一个开源库,现在已经push 到 GitHub 上,欢迎大家Watch、Star、Fork。 包含...

Cundong
2014/09/02
0
2
制作android差分升级包

编译升级包,差分包 编译升级包v0 source build/envsetup.sh lunch 12 make -j16 otapackage 拷贝out/target/product/项目名/obj/PACKAGING/targetfilesintermediates/目录下的zip包为versi......

kyle960
2016/11/28
23
0
Android ota update

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

lancy_android
2012/10/31
507
1

没有更多内容

加载失败,请刷新页面

加载更多

w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
39分钟前
0
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部