文档章节

Android OTA 差分包升级

l
 lxp198837
发布于 2012/06/20 10:54
字数 817
阅读 3741
收藏 3
点赞 1
评论 4

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

根目录下两个命令:

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
博文 29
码字总数 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 ⋅ 1

制作android差分升级包

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

kyle960 ⋅ 2016/11/28 ⋅ 0

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

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

lxp198837 ⋅ 2012/06/26 ⋅ 0

Android ota update

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

lancy_android ⋅ 2012/10/31 ⋅ 1

Android高级之十三讲-HotFix、热加载和热更新

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 组件化与插件化:前者对功能进行拆分后,独立开发,打成一个包发布;后者对功能拆分,使用主包+分包,可以分别独立发布。...

liuzxgeek ⋅ 2016/12/14 ⋅ 0

Android Vendor Test Suite (VTS) 的概念、作用及测试方法

hidl:system/libhidl/transport -p android.hardware.nfc@1.0 hardware/libhardware/include/hardware/nfc.h $ sudo apt-get install protobuf-compiler $ sudo apt-get install python-pip ......

yongwan5637 ⋅ 05/03 ⋅ 0

彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(二)

在上一篇博客中,我给大家详细介绍了ant实现Android多分包技术,具体可以点击查看:彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一);接下来的这篇博客我将带领大家一起学习...

tan6458 ⋅ 2017/01/09 ⋅ 0

彻底掌握Android多分包技术MultiDex-用Ant和Gradle分别构建(一)

Andrid多分包技术在大型项目编译方面起着至关重要的作用,作为一个高级开发者我们有必要掌握此技能,现在我带领大家统一学习此项技能,并教会大家分别使用Ant和Gradle构建。 什么是Dex Dex是...

tan6458 ⋅ 2017/01/09 ⋅ 0

Android热修复Tinker接入实战

自2016年底Android Studio3.0版本退出以来,Android提出了InstantRun热修复方案,基于这种机制,各种热修复框架竞相涌现,国内的软件大厂纷纷开发了自己的热修复框架。对于热修复的更多介绍大...

code_xzh ⋅ 05/04 ⋅ 0

Android Things 1.0 正式发布,Google 托管操作系统

Android Things 是 Google 的托管操作系统,可以让您大规模构建和维护物联网设备。运用 Google 的后端基础设施,我们通过认证硬件、丰富的开发者 API 和安全的托管软件更新提供了一个可靠平台...

达尔文 ⋅ 05/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL主从复制原理、半同步操作步骤及原理

1.1 企业Linux运维场景数据同步方案 1.1.1 文件级别的异机同步方案 1、scp/sftp/nc 命令可以实现远程数据同步。 2、搭建ftp/http/svn/nfs 服务器,然后在客户端上也可以把数据同步到服务器。...

xiaomin0322 ⋅ 8分钟前 ⋅ 0

Oracle10g 数据及文件迁移过程[原]

QL*Plus: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:22:35 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Re......

harrypotter ⋅ 14分钟前 ⋅ 0

nginx安装

1:安装工具包 wget、vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake gcc gcc-c++ 2:下载nginx安装包 wget http://nginx.org/download/nginx-1......

壹丶贰 ⋅ 17分钟前 ⋅ 0

ideaVim安装及配置

1.安装插件 File-Settings-Plugins,Browse Repositories,输入ideavim,安装。 重启后,在Tools-Vim Emulator启用。 2.快捷键设置 ideaViim键与idea快捷键有冲突,可以在Settings-Other Se...

Funcy1122 ⋅ 21分钟前 ⋅ 0

MySQL中B+Tree索引原理

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B...

浮躁的码农 ⋅ 36分钟前 ⋅ 0

两道面试题,带你解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{ static { System.out.println("爷爷在静态代码块"); }} cl...

1527 ⋅ 40分钟前 ⋅ 0

SpringCloud(Data Flow)

dataflow-server

赵-猛 ⋅ 50分钟前 ⋅ 0

深入理解Java虚拟机

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学...

颖伙虫 ⋅ 55分钟前 ⋅ 0

NanoPi NEO core/ Ubuntu16.04单网卡配置3个IP地址(2个静态,1个动态)

配置 root@NanoPi-NEO-Core:/etc/network# cat interfacesauto loiface lo inet loopbackallow-hotplug eth0iface eth0 inet static address 172.31.188.249 netmask 255.......

SamXIAO ⋅ 今天 ⋅ 0

三步为你的App集成LivePhoto功能

摘要:LivePhoto是iOS9新推出的一种拍照方式,类似于拍摄Gif图或录制视频片段生成图片。如果没有画面感,可以联想《哈利波特》霍格沃茨城堡的壁画,哈哈,很炫酷有木有,但坑爹的是只有iphone6S以...

壹峰 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部