OTA升级包制作

制作OTA全量升级包

  1. 导入环境 source build/envsetup.sh

  2. lunch 选择版本

  3. 首先全局 make -j16 一下,保证编译生成文件的完整

  4. 再次执行 make -j16 otapackage 生成ota全量包

  5. 两个重要的文件悉知

    1. 全量升级包 -> out/target/product/.../*.zip,
    2. 差分包中间文件 -> out/target/product/makena/obj/PACKAGING/target_files_intermediates/*.zip
    
  6. 拷贝 out/target/product/…/*.zip到优盘,重命名update.zip

  7. (可选)adb shell到/cache/recovery/command,添加命令–update_package=root:path以告知Recovery进行升级:

    1. touch cache/recovery/command
    2. echo –update_package=root:path > cache/recovery/command
    
  8. reboot recovery 进入recovery选择升级包升级

OTA差分包制作

  1. make otapackage过程生成中间文件目录 out/target/product/…obj/PACKAGING/target_files_intermediates/拿到中间文件*.Mooney

  2. 拷贝文件到根目录下,重命名中间文件1.zip

  3. 根据修改源代码,重新编译OTA全量升级包,再次重复1步骤到指定文件夹下拿到第二次生成的中间文件

  4. 拷贝文件到根目录,重命名2.zip

  5. 命令制作差分包 ./build/tools/releasetools/ota_from_target_files -v -i 1.zip -p out/host/linux-x86 -k build/target/product/security/testkey 2.zip update_signed.zip

    工具的命令行参数因版本不同有微小的变化,现列举一些常见参数说明: 
        -b  (--board_config)  <file> 
        在代码中用pass处理这一参数匹配,不做处理。 
        -k (--package_key) <key> 
        指定签名用的密钥。如果缺省,会从指定的源或目标版本包的META/misc_info.txt文件中获取,或使用"build/target/product/security/testkey"。对于制作增量升级包,默认的密钥是基于源版本包文件META/misc_info.txt中的指定的路径下的密钥对,而不是从目标版本包里的文件中获取,这点应该注意到。 
        -i  (--incremental_from)  <file> 
        -i参数后指定的zip将作为差分包制作的源版本包处理 
        -w  (--wipe_user_data) 
        生成在安装时擦除user date分区的升级包 
        -n  (--no_prereq) 
        忽略时间戳检查,用于开发过程中的OTA包的经常升降级 
        -e  (--extra_script)  <file> 
        在制作的升级包中的升级脚本中插入外部的脚本。 
        -a  (--aslr_mode)  <on|off> 
        指定是否打开升级包的aslr模式,默认为on状态 
        -p  (--path)  <dir> 
        指定一个路径,作为工具在运行过程中搜索二进制可执行文件的路径。在升级包制作中,我们一般指定/out/host/linux-x86目录,作为搜索签名工具的路径。 
        -f  (--fota) <fota> 
        指定是否使用 fota升级方式,默认为不使用。 
    
坚持原创技术分享,您的支持将鼓励我继续创作!