[开源]OTA打包工具

2023-05-16

文章目录

    • OTA打包工具: `ota-packer`
    • 安装
      • 二进制安装
      • 源码编译安装
    • 使用
      • 准备
      • 示例
        • 全量包
        • 增量包生成
        • 关于OTA包版本之间文件变更类型说明
    • `ota_packer` 使用条件
    • License

OTA打包工具: ota-packer

使用 git 获取不同提交之间的文件差异实现OTA包生成。

开源地址: https://github.com/yicm/OtaPackageTool

ota_packer 工具默认提供了一个 linux-x86-64 的可执行文件,放于开源项目的 bin 目录下。该工具能够构建两种类型的包: 全量包和增量包。支持 tarzip 两种文件类型的包文件。实现 OTA 包的构建,需要借助 git 实现版本文件的管理。

安装

二进制安装

ota_packer 工具默认提供了一个 linux-x86-64 的可执行文件,放于开源项目的 bin 目录下。只需要克隆下载下来,即可执行:

$ git clone https://github.com/yicm/OtaPackageTool.git
$ cd OtaPackageTool/bin
$ ./ota_packer -h

源码编译安装

$ git clone https://github.com/yicm/OtaPackageTool.git
$ cd OtaPackageTool
$ go build -o bin ./...

编译完成后,生成的可执行文件已经输出到 bin 目录下。

使用

准备

  1. ota_packer 添加到环境变量 $PATH (这里就不展开如何添加了)
  2. 进入你的软件版本管理仓库根目录
$ cd your_installation_file_version_repository
  1. 就可以运行 ota_packer 相关的打包功能了

示例

# -----------------------------------------------
---
# 查看工具版本
$ ota_packer version
ota_packer version 0.0.1

# --------------------------------------------------
# 查看工具帮助
$ ota_packer -h
Archive of the diff files using git on Linux system.

Usage:
  ota_packer [command]

Available Commands:
  gen         Generate package file
  help        Help about any command
  version     Get version of ota_packer

Flags:
  -c, --config string         Config file (default is $HOME/.ota_packer.yaml)
  -h, --help                  help for ota_packer
  -n, --project-name string   Your project name (default "OTA")

Use "ota_packer [command] --help" for more information about a command.

# --------------------------------------------------
# 查看OTA包生成帮助
$ ota_packer gen -h
Generate a specific version package by entering different configuration parameters.

Usage:
  ota_packer gen [flags]

Flags:
  -F, --diff-filter string       git diff --diff-filter and a similar designation (default "ACMRT")
  -e, --end-commit-id string     End revision (default "HEAD")
  -f, --format string            The format of the archive, supporting zip and tar (default "tar")
  -h, --help                     help for gen
  -o, --output string            Output destination path of the archive
  -p, --prefix string            Prefixed to the filename in the archive while project name is not set. (default "ota_packer")
  -s, --start-commit-id string   Start revision (default "HEAD~1")
  -v, --verbose                  Show packaging process statistics

Global Flags:
  -c, --config string         Config file (default is $HOME/.ota_packer.yaml)
  -n, --project-name string   Your project name (default "OTA")

全量包

如果设置 --start-commit-id--end-commit-id 的值一致,则会生成当前 commit id 的全量包。如:

$ ota_packer gen -s HEAD -e HEAD
$ ota_packer gen -s HEAD~1 -e HEAD~1
$ ota_packer gen -s HEAD~3 -e HEAD~1
$ ota_packer gen -s 6bc76a1f -e 6bc76a1f

增量包生成

可以设置从某个提交版本升级/降级到指定版本,升级的化则需要 --start-commit-id 提交时间在 --end-commit-id 之前,否则的话就是生成的就是降级包。示例:

# 默认 --start-commit-id=HEAD~1, --end-commit-id=HEAD
$ ota_packer gen
$ ota_packer gen -s HEAD~2 -e HEAD~0
$ ota_packer gen -s 6bc76a1f -e 9d31d032

# Set output path as 'tmp' directory, and set project name as 'Test'
$ ./output/ota_packer gen -s HEAD~1 -e HEAD~0 -o tmp -n "Test"
-----------------------------------------------------------------
    Project Name  |  Test
------------------+----------------------------------------------
     Output Path  |  tmp/
------------------+----------------------------------------------
          Output  |  Test-20200630145419-6bc76a1-to-9d31d03.tar
------------------+----------------------------------------------
       Changelog  |  ota_info.json
------------------+----------------------------------------------
{
    "project_name": "Test",
    "last_ota_version": "6bc76a1",
    "ota_version": "9d31d03",
    "is_full_update": false,
    "changes": [
        {
            "type": "D",
            "old_path": "models/y.model",
            "new_path": "models/y.model"
        }
    ]
}
------------------+----------------------------------------------

关于OTA包版本之间文件变更类型说明

A:  新增了该文件
C:  从一个文件复制到另一个文件
D:  删除了该文件
M:  修改了该文件
R:  重命名了该文件(可能路径有所变化)
T:  更改该文件的类型

ota_packer 使用条件

  • Git v2.27.0 版本或以上
  • UNIX 或类 UNIX 系统
  • Go1.13+ (可选,源码安装时需要)

License

Released under the MIT Licence.

学习交流可以加我微信(XEthanm):

最新分享内容将会公众号首发:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[开源]OTA打包工具 的相关文章

  • AOSP ~ OTA调整分区

    参考 https blog csdn net guyongqiangx article details 124224206 https zhuanlan zhihu com p 364003927 https source android
  • ESP8266/ESP32+OLED12864简单WiFi扫描器 支持OTA

    功能描述 OLED显示SSID 全中文界面 支持中文SSID Arduino OTA支持 硬件准备 ESP8266 NodeMCU WiFi ESP32 WIFI 43 BLE 43 OLED开发板 OLED控制芯片 SSD1315兼容SS
  • 手把手教你基于STM32的BootLoader的OTA远程升级

    本文系21ic论坛蓝V作者小叶三千原创撰写 上次发过SD卡的Bootloader离线升级后 xff0c 应大家的要求 xff0c 这次就讲一下STM32的OTA远程升级 OTA又叫空中下载技术 xff0c 是通过移动通信的空中接口实现对移动
  • Android OTA升级

    1 xff0c Build otapackage后system img没有打包进去 xff1f Ota包里面缺失system img xff0c 原因是客户修改了prop里面的 ro product device value值 尝试以下两种
  • 汽车OTA是个什么鬼?

    OTA xff1a Over the Air Technology 这描述的是手机吧 xff01 不过一开始的手机也是不可以直接OTA的 1997年之前所有汽车都是一个独立的机械个体 xff0c 一个方向盘 xff0c 一组踏板 xff0c
  • An Ota Package Tool

    文章目录 OtaPackageToolInstallationBinary InstallationInstalling Tool from Source UsagePreparationExamplesFull UpdatesIncrem
  • ESP32+UART+TCP_Client+OTA

    在上一篇博客的基础上添加了OTA空中升级功能 实现的功能是一个WiFi DTU模块 xff0c ESP32板子通过串口与下位机连接 xff0c 我目前使用的下位机为51 xff0c ESP32第一次启动时 xff0c 通过微信小程序连接wi
  • 浅谈一下汽车行业中的OTA/FOTA/SOTA

    首先来一个背景知识铺垫 xff1a 被誉为汽车界 苹果 的特斯拉 xff0c 从它的第一款ModelS上市开始 xff0c 截止到2017年3月份的5年时间里 xff0c 总计对车辆推送了25次远程升级 特斯拉每次发布新系统新功能就可以通过
  • stm32 esp8266 ota升级-hex合并-烧录-bin生成

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • stm32 esp8266 ota升级-tcp模拟http

    stm32 esp8266 ota系列文章 xff1a stm32 esp8266 ota 快速搭建web服务器之docker安装openresty stm32 esp8266 ota升级 tcp模拟http stm32 esp8266 o
  • 在线旅游OTA行业调研报告-携程美团同程飞猪booking对比分析

    1 行业现状 根据前瞻研究院数据显示 2019年 我国在线旅游交易规模首次突破万亿规模 达到10866 5亿元 同比增长11 4 随着市场不断扩大 行业竞争也愈发激烈 市场上形成了以携程系 阿里系 美团系三大实力角逐的格局 在线酒店预订市场
  • OTA:目标检测的最优运输分配

    引言 该论文主要是关于目标检测中的标签分配问题 作者创新性地从全局的角度重新审视了该问题 并提出将标签分配问题看成是一个最优运输问题 要知道最优传输问题是当前最优化理论和GAN理论研究领域中的一个很火的研究课题 论文的实验效果俱佳 而且作者
  • 【YModem】YModem串口IAP升级例程+YModem串口工具

    目录 YModem协议传输的过程 IAP例程 YModem串口工具 YModem技术手册 手把手教你如何实现自动固件更新 YModem协议是由XModem协议演变而来的 每包数据可以达到1024字节 是一个非常高效的文件传输协议 Ymode
  • Gradle脚本基础全攻略

    http blog csdn net yanbober article details 49314255 t15 目录 背景 Gradle DSL基础 2 1 构建脚本Build scriptProject 2 2 初始化脚本Init sc
  • Maven学习 (一) 搭建Maven环境

    http www cnblogs com quanyongan archive 2013 04 17 3025971 html 有两种方式可以配置maven的环境配置 本人推荐使用第二种 即使用本地的maven安装文件 个人感觉这样可以方便
  • maven2 笔记

    http blog csdn net liu251 article details 2767188 学习Mina的时候 发现Mina使用Maven做项目管理的 又开始学习Maven 这段时间做的笔记 要学会这种类似于ant 又比ant高级的
  • webpack之sideEffects

    webpack之sideEffects 前言 一 sideEffects的使用 二 sideEffects注意事项 前言 webpack4新增了一个sideEffects新特性 它允许我们通过配置的方式 去标识我们的代码是否有副作用 从而为
  • 使用 itms-services URL 的 iOS8 应用程序无线 (OTA) 安装失败

    对于所有早期版本的 iOS 我都使用 itms services URL 无线安装测试 iOS 应用程序 OTA 现在 我的所有 iOS8 设备在尝试使用这种方法安装应用程序时都会失败 示例网址 itms services action d
  • 如何编写 Delphi Galileo IDE Expert?

    HI 我想为 D2007 D2009 又名 Galileo IDE 编写一个小型的 Delphi IDE Expert 以便显示一个带有 TMemo 实例的窗口 以及上面备忘录中表单设计器的所有组件名称和类 所选组件将标有 专家应出现在菜单
  • 以编程方式检查 Android OTA 系统更新

    如果您转到 设置 gt 关于手机 gt 检查更新 则会启动检查以查看是否有适用于您手机的系统更新 我如何以编程方式执行此操作 此外 我试图在 Android 源代码中找到发生这种情况的位置 以便我可以完整地看到它并更好地理解它 有没有人有什

随机推荐