前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AB升级(1): 使用Python脚本模拟升级

AB升级(1): 使用Python脚本模拟升级

原创
作者头像
小胡子
修改2022-05-25 10:38:15
1.2K0
修改2022-05-25 10:38:15
举报
文章被收录于专栏:小胡子专栏小胡子专栏

升级过程

system/update_engine/scripts/update_device.py --file full-ota-xxx.zip

执行命令以后,终端打印信息,Android系统中没有任何提示信息

代码语言:txt
复制
python system/update_engine/scripts/update_device.py out/target/product/dl36/dl36-ota-1640654433.zip
INFO:root:Running: adb shell su 0 update_engine_client --help
INFO:root:Running: adb reverse tcp:1234 tcp:39133
1234
INFO:root:Running: adb shell su 0 update_engine_client --update --follow --payload=http://127.0.0.1:1234/payload --offset=1808 --size=1345770359 --headers="FILE_HASH=clGjz1kJ/Toxcax0Ap8d2cCVupI1xoBBXgqOzNK+IeQ=
FILE_SIZE=1345770359
METADATA_HASH=EG0gbI1eQ5PCQhcOovjiP8zK1H14T6CL8znOwAnQRnE=
METADATA_SIZE=98416
USER_AGENT=Dalvik (something, something)
NETWORK_ID=0
"
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_IDLE (0), 0)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_UPDATE_AVAILABLE (2), 0)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_CLEANUP_PREVIOUS_UPDATE (11), 0)
127.0.0.1 - - [28/Dec/2021 15:16:24] "GET /payload HTTP/1.1" 206 -
INFO:root:Serving request for /payload from out/target/product/dl36/dl36-ota-1640654433.zip [1808, 1345772167) length: 1345770359
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 1.33515e-05)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 9.8739e-05)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.0101061)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.0201135)
... ...

[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.960808)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.970815)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.980823)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_DOWNLOADING (3), 0.99083)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.01)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.02)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.04)
 ... ...

[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.95)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.96)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.97)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.98)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 0.99)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 1)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 1)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_FINALIZING (5), 1)
[INFO:update_engine_client_android.cc(92)] onStatusUpdate(UPDATE_STATUS_UPDATED_NEED_REBOOT (6), 0)
[INFO:update_engine_client_android.cc(100)] onPayloadApplicationComplete(ErrorCode::kSuccess (0))
INFO:root:Running: adb reverse --remove tcp:1234
INFO:root:Server Terminated

重启前

adb shell getprop | grep slot_suffix

undefined

手动重启以后,通知栏会出现"Finishing system update..."字样

adb shell getprop | grep slot_suffix

undefined

系统成功由slot A切换到slot B

环境问题

执行脚本出现如下错误:

ImportError: No module named google.protobu

update_device.py以及相关脚本都是使用python2编写,如果使用python3需要大量改动。需要安装3.17.3这个是python2支持的protobuf最后一个版本,不然会出现各种编译的问题。

代码语言:shell
复制
sudo pip install protobuf==3.17.3

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 升级过程
  • 环境问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档