android OTA升级包制作【转】

本文转载自:http://www.thinksaas.cn/topics/0/445/445670.html

0.签名

java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8

这个key是debug模式下自动生成的key

你也可以通过openssl创建自己私有的key

OTA打包过程中会自动使用生成的key进行签名,OTA升级包里签名的位置如下

│ [OTA PACKAGE]

│ └─META-INF

│ CERT.RSA

│ CERT.SF

│ MANIFEST.MF

│└─com

│---└─android

│------otacert

1.使用Android的打包命令制作oTA升级包

整个项目编译完成后再执行make otapackage

生成的完整升级包会存放在outdebug argetproduct[project name]  下

具体名字根据make otapackage的install来确定

生成的过程文件包在out/target/product/ardbeg/obj/PACKAGING/target_files_intermediates/目录下,该文件可用于创建差分升级包

2.OTA包的修改

1)update-script

OTA包解压后META-INFcomgoogleandroid目录下有两个文件

update-binary是一个二进制文件,相当于一个脚本解释器,能够识别updater-script中描述的操作。该文件在Android源码编译后out/target/product/tcc8800/system bin/updater生成,可将updater重命名为update-binary得到。
该文件在具体的更新包中的名字由源码中bootable/recovery/install.c中的宏ASSUMED_UPDATE_BINARY_NAME的值而定。

updater-script:此文件是一个脚本文件,具体描述了更新过程。我们可以根据具体情况编写该脚本来适应我们的具体需求。该文件的命名由源码中bootable/recovery/updater/updater.c文件中的宏SCRIPT_NAME的值而定。

升级时的进度条,升级哪些文件都是这个脚本里指定的。如果需要修改打包的文件,这一般修改这个脚本或替换包里资源文件为主

关于这块网上描述的比较多,不再陈述了,可参考

[实用教程]_关于ROM的updater-script脚本详解
http://wenku.baidu.com/link?url=PBCuu50VRxDzx_1wb5JfyZH-oURgYhMTyDVq5SGKsPZqfP3wW6DbegiFqszYJVzP3037osTX-aEFmsAx5nnMH6CYcJOuDAXo1jm0BfROmi3

2)recovery代码

[src path]ootable ecovery

其中bootable ecoveryupdaterinstall.c

该函数中注册的子函数可直接在update-script脚本中调用

部分嵌入式产品中,bootloader,开机画面等分区的烧写读取都是自己定义的,需要更新这种分区就需要在注册函数里,增加私有的函数

3)修改已产生的升级包

解压缩update.zip,并根据上述规则修改update-script脚本和资源文件

重新打包,打包时记住一定要用存储模式打包,千万不要选择有任何压缩内容相关的方式。否则签名会失败

再参考第0条手动签名新的包文件刷机就可以了

3.OTA差分升级包

先 make otapackage 分别制作新旧两个包。

用于制作差分包的包文件在如下目录下

out/target/product/[produce name]/obj/PACKAGING/target_files_intermediates/

因需要先刷到旧版本中才能使用差分包,故需要做版本管理的就要把中间文件和完整包都保存下来,分别在如下路径(需要同时生成的匹配的版本)

out/target/product/[produce name]/obj/PACKAGING/target_files_intermediates/

out/target/product/[produce name]/

再用新旧obj目录对应文件产生差分包

mkdir OTA/
cp xxxx_obj.zip  OTA/old_obj.zip
cp yyyy_obj.zip OTA/new_obj.zip

//网上建议在源代码根目录运行生成工具,据说是里面使用了根目录相对路径
./build/tools/releasetools/ota_from_target_files -v -n -i OTA/old_obj.zip OTA/new_obj.zip OTA/diff.zip

这样就生成了差分包,在old product对应的版本里就能用该差分包升级了。

差分包制作过程中的错误

http://blog.csdn.net/kangear/article/details/23831431
时间: 2024-10-21 19:06:48

android OTA升级包制作【转】的相关文章

android OTA升级包制作

0.签名 java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 这个key是debug模式下自动生成的key 你也可以通过openssl创建自己私有的key OTA打包过程中会自动使用生成的key进行签名,OTA升级包里签名的位置如下 │ [OTA

Android OTA升级包制作脚本详解(四,生成升级脚本updater-script)

updater-script简介: updater-script是我们升级时所具体使用到的脚本文件,它主要用以控制升级流程的主要逻辑.具体位置位于更新包中/META-INFO/com/google/android/目录下,在我们制作升级包的时候产生. updater-script生成: 那么升级脚本updater-script是如何产生的呢,我们来看ota_from_target_file中的一条语句,这个之前有过介绍. #在/build/tools/releasetools/目录下的模块edi

Android OTA升级包制作脚本详解(五,升级脚本updater-script的执行<1>)

写在前面: 首先当我们执行升级脚本updater-script的时候,就表示我们已经进入了升级安装状态.那么在我们就从实际的安装作为入口开始分析.也就是说我们从install.cpp中的install_package函数开始一步步来分析. 这里主要分析与脚本相关的部分,其他的请参考这位朋友的博文http://blog.chinaunix.net/uid-22028566-id-3533856.html,我也很受启发.这里也借用一张图来帮助流程上的分析. 下面是调用的流程:install_pack

Android OTA升级包制作脚本详解(三,打包)

这是在ota_from_target_files中mian函数中打包的主要流程语句: #抽象一个新的临时文件 temp_zip_file = tempfile.NamedTemporaryFile() #创建一个zip包用来进行打包 output_zip = zipfile.ZipFile(temp_zip_file, "w", compression=zipfile.ZIP_DEFLATED) #判断是差分还是整包 if OPTIONS.incremental_source is N

Android OTA升级包制作脚本详解(一,参数解析)

写在前面: "build/tools/releasetools/ota_from_target_files  -u lk.bin  -n target.zip update.zip"这是制作整包的命令,很显然这里支持lk升级.本系列博文主要对该命令的执行流程及原理进行一个系统的分析,涉及到/build/tools/releasetools/目录下多个模块如ota_from_target_files.common等.由于本人对python了解粗浅,文中所涉及到的python语法大都做了注

Android OTA升级包制作脚本详解(二,解压缩)

第一步:解压缩(ota_from_target_files) print "unzipping target target-files..." OPTIONS.input_tmp, input_zip = common.UnzipTemp(args[0]) 上面的代码是开始进行解压缩的入口 def UnzipTemp(filename, pattern=None): """Unzip the given archive into a temporary d

OTA升级包制作工具处理过程分析

http://blog.csdn.net/ly890700/article/details/56048815 Android Recovery(30) 1.概述 OTA升级包制作工具是一个用python实现的命令行工具.工具位于source_root/ \build\tools\releasetools目录下,入口文件是ota_from_target_files.此工具可对编译生成的源或目标软件版本包进行处理,生成最终的OAT完整升级包(默认),或通过参数-i控制,生成OTA增量升级包(差分包)

Android OTA升级

1,Build otapackage后system.img没有打包进去? Ota包里面缺失system img,原因是客户修改了prop里面的"ro.product.device" value值. 尝试以下两种方式,ota_from_target_files中不需要设定 cust_dir1 这个值了: a. 修改ota_from_target_files 中的system_path:system_path = os.path.join("out/target/product/

android利用jdk制作签名

Apk签名首先要有一个keystore的签名用的文件. keystore是由jdk自带的工具keytool生成的.具体生成方式参考一下: 开始->运行->cmd->cd 到你安装的jdk的目录这里我是 C:\Program Files\Java\jdk1.6.0_10\bin 然后输入:keytool -genkey -alias lvmama.keystore -keyalg RSA -validity 10000 -keystore lvmama.keystore 下面解释下签名的参