本文转载自: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

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

  1. android OTA升级包制作

    0.签名 java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/t ...

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

    http://blog.csdn.net/ly890700/article/details/56048815 Android Recovery(30)  1.概述  OTA升级包制作工具是一个用pyt ...

  3. Android系统OTA升级包制作【转】

    本文转载自:http://blog.csdn.net/dingfengnupt88/article/details/52882788 Android系统升级分为整包升级和差分包升级,整包升级就是将系统 ...

  4. 制作OTA升级包

    OTA 软件包工具 本文地址http://wossoneri.github.io/2018/09/21/%5BAndroid%5D%5BFramework%5Dcreate-ota-update-zi ...

  5. Android OTA在线升级二(升级包编译原理分析) 【转】

    本文转载自:http://blog.csdn.net/huryjiang/article/details/7590015 1 升级包的制作 基本命令: Ø  makeMtk [project[flav ...

  6. Android OTA在线升级一(架构分析)【转】

    本文转载自:http://blog.csdn.net/yanleizhouqing/article/details/50234213 1.前言 OTA(Over-the-Air Technology) ...

  7. Android OTA 升级之三:生成recovery.img

    Android OTA 升级之三:生成recovery.img 作者: 宋立新 Email:zjujoe@yahoo.com 前言 得到了ota升级包后,我们就可以用它来升级系统了.Android 手 ...

  8. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  9. recovery 差分升级包制作超时

    我们在对android系统升级的时候,可以减少升级包的大小,只升级差异部分,也就是差分包升级,相关的描述可以参考:http://blog.csdn.net/csdn66_2016/article/de ...

随机推荐

  1. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  2. Android中常用布局单位

    Android在UI布局时经常用到一些单位,对单位混用直接会影响UI的显示,要想正确的在布局中使用每种单位就必须先真正的熟悉它. UI显示效果的影响因素:屏幕尺寸.屏幕密度.分辨率:而android手 ...

  3. systemd管理进程

    systemd很强大的管理工具,这里简单用来管理一个进程: [Unit]Description=Imges Compress Server [Service]Type=simpleExecStart= ...

  4. php SSL certificate problem: unable to get local issuer certificate

    加上 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); 就可以了 百度语音的demo: <?php header("Content-type ...

  5. Lua学习十一----------Lua迭代器

    © 版权声明:本文为博主原创文章,转载请注明出处 Lua迭代器 - 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 - Lu ...

  6. GO语言使用开源SSH模拟终端

    <pre name="code" class="plain">package main import ( "go-ssh/ssh" ...

  7. 匿名函数块级作用域以及在JQuery中的应用

    最近经常回在群里面看到有些朋友问如下这样的js写法该如何理解的的问题,虽然可能对匿名函数有些理解,但是有时候看到JQuery源码或者其他JS库中同样的写法时,就有点不理解了,今天再次分享下这方面的知识 ...

  8. linux修改root管理员密码

    以root 身份登录(SSH操作) 输入 passwd 命令 就可以看到提示输入新密码了 输入密码的时候是看不到字符的.

  9. Redis源码阅读-sds字符串源码阅读

    redis使用sds代替char *字符串, 其定义如下: typedef char *sds; struct sdshdr { unsigned int len; unsigned int free ...

  10. ubuntu openfire Server install

    1.首先登录到ubuntu server.在安装openfire 服务器之前,先确保你的系统已经更新到最新.然后输入下面的命令,一行一行执行,最后安装可用的更新 sudo apt-get update ...