zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    jbpm 为任务自由选择办理人
    我永远的 dell 15r
    select radio readonly
    面向对象的5条基本设计原则
    Java数据库缓存思路
    作为java应届生,面试求职那点事
    项目开发中数据字典设计实现缓存
    oracle 优化 —— 分区表
    myeclipse快捷键
    win8 安装myeclipse 失败 MyEclipse ForSpring 安装失败
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/6595957.html
Copyright © 2011-2022 走看看