android OTA 升级

OTA 升级

定义:

升级的两种方式:全包升级和差分包升级。

全包升级:是指进入Recovery模式进行整个系统的升级,(4.1整个系统升级包110多兆)

差分包升级:是指根据两个版本之间的差别升级系统。(差分包一般很小,几兆到几十兆)


差别:

全包升级:可以将任意版本升级到全包所对应的版本,不需要考虑当前系统版本

差分包升级:只能从特定的版本升级到另一个版本,根据当前系统的版本选择对应的升级包,一般差分包都很小,适合网络升级。


如何升级:

全包升级:

前提:

1. 源码一份

2. 编译源码

3. out/host/linux-x86/bin 下运行./fastboot flashall –w不会黑屏(bootloader模式下),保证编译出来的代码能够在机器上正确运行。

生成升级包命令行:

  1. .build/envsetup.sh

  2. lunch4 //项目要求

  3. makeotapackage //编译生成包


如果成功:我们需要两个生成的文件

  1. out/target/product/grouper/full_grouper-ota-eng.root.zip

文件路径根据项目的不同而不同,会在命令行提示生成在哪。这个文件先定义为sdcard升级包A

(如果运行失败:我遇到了两种情况,一种是编译了一次之后没做任何修改,默认是不会编译的。第二种没有规则去编译otapackage,我的处理方式是重新开一个终端在按步骤运行一次,不知道原因是什么)。


第二个我们需要的文件:

out/target/product/grouper/obj/PACKAGING/target_files_intermediates/full_grouper-target_files-eng.root.zip

这个文件是后面生成OTA差分包需要用的。先称之为OTA升级包old

此时我们就可以进行全包升级了


升级:

前提:需要文件sdcard升级包A

将次文件拷贝到机器的sdcard下。重启机器进入bootloader模式。(adbreboot-bootloader

如图:



选择:Recoverymode 启动。出现下图


如果没出现如上图:而是直接


还需要刷recovery.img。此处应该是google定制的recovery.img

此文档意外还提供了一个N7FBT.rar。解压文件

  1. 进入bootloader模式

  2. 命令行运行:cd到解压的目录,运行fastbootflash recovery R6.img

  3. 重新启动bootloader


再选择recoverymode启动,就可以看到如下:



选择installzip from sdcard,选着push进去的zip文件就可以完成全包升级了。

(有升级失败的情况,我遇到的都是包有问题,所以请先确保out/host/linux-x86/bin 下运行 ./fastbootflashall –w 不会黑屏~


重启机器,升级完成!


OTA差分包升级:

前提:前期编译,获得了文件OTA升级包old拷贝到任意目录(比如root/ota/old

并将机器用全包升级到这个升级包对应的版本。

在代码中任意修改内容(做实验可以选择能够直接看出效果的内容进行修改)。


  1. 步骤:

修改完成后,编译代码。

  1. 以同样的方式生成文件

文件1out/target/product/grouper/full_grouper-ota-eng.root.zip(全包升级文件,此处不需要)

文件2

out/target/product/grouper/obj/PACKAGING/target_files_intermediates/full_grouper-target_files-eng.root.zip (此文件我们需要,称为OTA升级包new)。


  1. OTA升级包new拷贝到文件夹中(比如root/ota/new)。

  2. 生成差分包:

-src根目录下执行./build/tools/releasetools/ota_from_target_files-i <A> <B><差分包名>

(网上说:这里必须在src根目录下执行,因为ota_from_target_files.py这个脚本里面写定了相对路径的引用文件。具体没试过,但是在src下运行肯定没错)


举例:命令如下:

./build/tools/releasetools/ota_from_target_files

i

root/ota/old/full_grouper-target_files-eng.root.zip

root/ota/new/full_grouper-target_files-eng.root.zip

root/ota/update.zip

(文档格式要求,用空格。)

如果运行正确,会在root/ota/下生成文件update.zip


  1. OTA差量包的使用:

  • 以上为例:先将机器使用全包升级,升级文件为sdcard升级包A

  • make出来的文件update.zip push 到机器的/data目录下。(此处必须在/cacheand /data目录下)

  • 任意写程序调用:android.os.RecoverySystem.installPackage(Context context, File packageFile)  参数:context和文件路径,此处为/data/update.zip

  • 需要的权限<uses-permissionandroid:name="android.permission.REBOOT"/>(如果还需要其他权限,请自行添加,此处我是加到settins中的,权限很多。API上说明的只要此权限)

  • 运行程序,机器重启自动升级。

  • 升级完成。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值