分享Android recovery updater-script进度条函数的使用经验

深入解析Android non-AB OTA升级包制作与签名机制 本文深入解析了Android non-AB OTA升级包的制作与签名机制。详细介绍了传统non-AB升级模式下update.zip的核心结构、关键文件(如updater-script)的编写,以及数字签名验证的安全流程。通过实战演练,指导开发者如何手动构建、签名升级包,并提供了常见错误排查与调试技巧,是深入理解Android系统更新机制的实用指南。 阅读详情

特别说明:
1.zyphio原创文章,转载请注明作者和出处;
2.因为加入TWRP Recovery进行测试,得出一些新的观点,特此更新,2014年1月19日;
3.以下文章中的“M”的赋值,在CWM Recovery中M=1.33,在TWRP Recovery中M=1.0。


发现从网上下载的众多Android手机卡刷包在刷机时,进度条的显示很混乱。有的刷机时没有进度条,有的显示超出屏幕,即使有显示,也大多与实际工作进度不符,而这个问题涉及到Android recovery zip刷机包中的updater-script里的两个函数——show_progress和set_progress。本人搜索了一下国内的资料,发现对这两个函数的解释都源自一份“Edify语法简介”的翻译,参数说明的表达也很模糊。为此,我搜索了一下国外的资料,本人水平有限,源码看不太明白,但发现国外也已经有人提出来Edify中这两个函数的设计并不算很完善。后来在xda-developers论坛中看到有人通过实验去探索这两个函数的正确用法,虽然结果也不算太完美,但他的测试方法给我很大启发。为此我测试了近30种写法,总算得出这两个函数的效果相对好的使用方法(当然,受不同Recovery的影响,不排除有些情况我没测试到,功能理解上可能也不算全面,难免有错漏,还望各位指正)。



一、函数详解


函数语法: 
show_progress(frac, sec)
用途:
显示其下一行代码至下一个show_progress之间的所有命令代码执行进度。
参数详解: 
frac 进度条增减值,取值在0至M间,多条show_progress的情况下,这个值累积起来不要大于M(除非用set_prograss执行进度退回),否则显示的进度条会超出进度条边框甚至超出屏幕,最好累积等于M就刚好进度全满,此值不可以是负数;
Sec  至下一个show_progress之间的所有命令代码执行所耗时间的预测值,以秒为单位,也相当于进度条增减值frac动态走动所用时间,如果这个预测值小于代码实际执行所用时间,则进度条停止,等待代码执行完成;如果大于,则进度条会跳跃前进。


函数语法: 
set_prograss(frac)
用途:
set_prograss(frac)命令执行时,进度条指示的进度。
参数详解: 
frac 进度值,取值最小0.0,取值最大M。


二、区别对比


show_progress可用于分段动态显示进度,每一段进度条走动是动态增减,即从一点匀速走动到另一点;
set_progress可用于分段静态显示进度,每一段进度条走动是跳动的,可从一点直接跳动到另一点。


三、使用提示


1.经过多次测试后发现,TWRP Recovery对show_progress函数的支持可能存在问题,每一次有动态进度效果,但也显示不正确,如果不重启,则随后刷入的刷机包中若含有show_progress函数,则都无效,进度条直接显示全满(到来像是TWRP Recovery的bug)。所以在TWRP Recovery,推荐只使用set_progress函数,才不会出现第二次刷入时进度条显示全满的问题。
2.适用于CMW Recovery的刷机包,要纯粹表示刷机进度的话,推荐优先或仅使用show_progress函数,能有很好的动态进度效果。
3.为了重新定位进度值,或表示卸载,或者是多重进度等,例如,为了让进度从100%往回走到0%,或100%后再从0%再走一次等特殊、复杂需要,好像只能使用set_prograss函数。
4.这二个函数混用小心些,容易进度没显示或进度错乱,甚至脚本出错。


四、实际例子


本例子适用CMW Recveory,其中show_progress的预测值小于代码的实际执行时间,若“大于”则会有进度跃进的效果。


ui_print(" ");
ui_print("PROGRESS BAR USAGE");
ui_print("Powered by zyphio");
ui_print("2013-12-17");
ui_print("");


show_progress(0.1, 1);
ui_print("  Please Wait ...");
sleep(2);


show_progress(0.6, 8);
ui_print("  Updating system ...");
sleep(10);


show_progress(0.3, 4);
ui_print("  Updating data ...");
sleep(6);


show_progress(0.1, 2);
ui_print("  Updating cust ...");
sleep(4);


show_progress(0.1, 2);
ui_print("  Updating boot ...");
sleep(4);


show_progress(0.13, 1);
ui_print("  Please Wait ...");
sleep(2);


ui_print("");
ui_print("  Completed!");





第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现 本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束 阅读详情

相关推荐

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2591

recovery升级是显示进度条_Android recovery更新简单流程及注意点

关于recovery更新相关的几点总结记录:1、recovery升级的大致流程:①编译:执行make otapackage②.main system模式下,将升级包重名为update.zip,下载到/cache目录下③.创建文件/cache/recovery/command,并向command中写入:--update_package=/cache/update.zip④终端执行reboot rec...

weixin_39664774的博客 743

Ubuntu18.04环境搭建与疑难解析:从零复现YOLO-6D姿态估计算法

本文详细介绍了在Ubuntu18.04环境下从零开始复现YOLO-6D姿态估计算法的完整流程,包括系统配置、Conda环境搭建、PyTorch安装、依赖项管理、源代码获取、数据集准备以及训练验证过程。针对Singleshotpose算法的特殊需求,提供了详细的疑难解析和性能优化技巧,帮助开发者高效完成算法复现和应用部署。

weixin_30369041的博客 456

updater-script命令详解教你写刷机脚本

updater-script命令详解,刷机脚本怎么写,这些问题都也算是安卓的入门知识了,今天就和大家讲解一下,讲解人是深度论坛的Seeyou,如果你想学习更多ROM制作安卓开发方面的知识,欢迎加入深度DRT团队,我们从初级到高级给大家系统的讲解。 命令:mount 用法:mount(fs_type, partition_type, location, mount_point) 参数讲解:

莹波&微步 1万+

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 518

Weblogic安装与部署

27.免密登录,在目录Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer和Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\Server-TA目录下,新建security\boot.properties文件,13.点击新建按钮,填写服务器名称,服务器监听地址,再点击下一步,最后点击完成。

m0_46259466的博客 6635

Android进度条函数,Android实用笔记——使用ProgressBar实现进度条

1、ProgressBar的分类可以精确显示进度(可以显示刻度或者精确百分比) 不可以精确显示精度(一直转,类似于一个过场动画) 2、关键属性和方法指定ProgressBar显示风格style="?android:attr/progressBarStyleLarge" 大环形进度条style="?android:attr/progressBarStyleSmall" 小环形进度条sty...

weixin_33037051的博客 1176

Ubuntu更新后VirtualBox报错rc=-1908?手把手教你修复Kernel driver not installed

本文详细解析了Ubuntu更新后VirtualBox报错rc=-1908的原因,并提供了完整的修复方案。通过重新安装VirtualBox、处理DKMS内核模块以及解决Secure Boot问题,帮助用户快速恢复虚拟机功能。特别针对Kernel driver not installed错误,给出了从诊断到修复的详细步骤。

weixin_42519781的博客 339

Android OTA升级包制作脚本详解(四,生成升级脚本updater-script)

updater-script简介: updater-script是我们升级时所具体使用到的脚本文件,它主要用以控制升级流程的主要逻辑。具体位置位于更新包中/META-INFO/com/google/android/目录下,在我们制作升级包的时候产生。 updater-script生成: 那么升级脚本updater-script是如何产生的呢,我们来看ota_from_target

从0到1,突破自己 2万+

极坐标格式算法(PFA)-SAR成像算法系列(六)

SAR成像算法:极坐标格式算法,介绍了算法的基本原理以及实现步骤,包含dechirp处理、RVP补偿,距离插值、方位插值。文后附有代码,可根据自身情况下载。

yjh_2019的博客 1万+

【报错】open /var/lib/docker/tmp/docker-import-863402796/bin/json: no such file or directory

然后,通过docker images可以看到镜像已经加载进来了。然后,通过docker images可以看到镜像已经加载进来了。

静谧、淡雅 6223

android导出函数脚本,Android OTA升级包制作脚本详解(四,生成升级脚本updater-script)...

①对比更新包时间戳,只允许升级旧版本下面这段代码是在ota_from_target_files中的语句#下面这段代码我们可以理解为不允许降级,也就是说在脚本中的这段Assert语句,使得update zip包只能用于升级旧版本。if not OPTIONS.omit_prereq:ts = GetBuildProp("ro.build.date.utc", OPTIONS.info_dict)#得...

weixin_31437143的博客 725

TGAT Python:图神经网络中的动态图算法

其中,图神经网络中的动态图算法成为了研究的热点之一。在模型的 forward 方法中,通过循环调用 TGATLayer 实例来进行图神经网络的前向传播。最终,模型返回图中节点的表示向量 output,可以用于图分类等任务。TGAT 算法的核心思想是在节点之间建立注意力连接,以捕捉节点在不同时间步之间的关系。TGAT 算法通过引入注意力机制和时间信息,从而有效地对动态图数据进行建模和分析。通过以上 Python 代码,我们可以方便地构建和训练 TGAT 模型,并在图分类任务中应用它。

2301_79366435的博客 1827

Android 9.0 A/B升级原理分析

概述: A/B 系统更新,也称为无缝更新,用于确保可运行的启动系统在无线 (OTA) 更新期间能够保留在磁盘上。这样可以降低更新之后设备无法启动的可能性,也就是说,用户需要将设备送到维修/保修中心进行更换和刷机的情况将有所减少。 用户在 OTA 期间可以继续使用设备。在更新过程中,仅当设备重新启动到更新后的磁盘分区时,会发生一次宕机情况。即使 OTA 失败,设备也仍然可以使用,因为它会启动到 ...

u013306216的博客 9608

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

刷机脚本基础语法

【代码】刷机脚本基础语法。

zzjlhlcd的博客 1203

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android Recovery升级原理

摘要 Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windows PE或DOS)。也可以称之为安卓的恢复模式,在这个所谓的恢复模式下,我们可以刷入新的安卓系统,或者对已有的系统进行备份或升级,也可以在此恢复出厂设置(格式化数据和缓存)。 1. Recovery相关概念 Recovery: Recovery模式指的是一种可以对安卓机内部的数据或系统进行...

weixin_30666401的博客 704

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

recovery 中使用busybox

在recovery升级调式中,可以利用system分区里面的system/busybox 来调式 比如 ls cp 都可以如下使用: 注意:我这边的特殊处是 有两个system。因为我的system分区里面是包含root头的,一般的文件系统是将 root头打入kernel的。 如果system没有待root头就只需要一个system目录。 ui_print("st

wuxy_shenzhen的专栏 2452

Android OTA升级原理和流程分析(九)---updater-script脚本语法简介以及执行流程

转载自:http://blog.youkuaiyun.com/mu0206mu/article/details/7465603           目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制。 一、upda...

ljj342018214的博客 1525

recovery升级是显示进度条_Android recovery 升级流程

1.Android的启动模式一般来讲,Android有三种启动模式:Fastboot模式,Recovery System 以及Main System。Fastboot:在这种模式下,可以修改手机的硬件,并且允许我们发送一些命令给Bootloader。如使用电脑刷机,则需要进入fastboot模式,通过电脑执行命令将系统镜像刷到通过USB刷到Android设备中中。Recovery:Recovery...

weixin_39708822的博客 782

android setprogress,【已解决】Android中的进度条,虽然设置了setProgress但是也不更新,直到最后完成时,突然更新为100%...

【问题】折腾:的过程中,虽然实现了代码了,且也调试确保调用到了Progressbar的setProgress,但是结果还是不更新。直到事情完毕,最后突然更新到100%。【解决过程】1.参考:貌似说是bug。2.参考:貌似还是UI的几种状态的逻辑没处理好的问题。但是我这里,不是在onCreate中创建的。不过的确是主线程中使用的,是某个按钮事件触发的。其中是放在一个callback函数中的。所以,按...

weixin_33514221的博客 2410

android自定义ProgressBar 修改进度条样式 出现setProgress无效问题

在很多时候android系统提供的进度条样式是不足以满足我们的需求的,因此在大多数的时候,我们为了美观,亦或者为了实现自己的功能,需要在系统的基础上进行修改其样式,当然你也可以自己从头写一个,不过个人觉得还是比较麻烦,好吧,废话不多说了,进入正题。 昨天在做一个下载功能时,需要一个进度条显示其进度,本来是很简单的功能,以前也做过,本以为很容易就可以实现,却因为一个细节,浪费了好几个小时,因此就记

大牛也是从菜鸟开始的 1万+

手机卡开机界面,无法进入rec,但可以进入fastboot,解决方案

想直接看解决方法见总结即可 2020.10.13:记一件小事。今晚官改miui日常升级呢,电脑上玩着玩着,手机还没开机继续打一会csgo人机,打完还没开机,一看一直卡在redmi界面,不对劲!一般开机redmi界面完后,应该会展示开机动画的,我这个都进不去开机动画。开始测试 特征 无法进入recovery模式:长按电源键与音量加键,手机震动一下,亮屏又是这个redmi界面,有时候放着也会自动这样重启,就是循环卡在了这个开机界面。 此时如果插上电源,指示灯会变成红色,应该表示在充电。 因为也没有开启us.

二次蓝的博客 5万+

Android系统Recovery工作原理之使用update.zip升级过程分析

转自:      http://blog.youkuaiyun.com/mu0206mu          这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理。我们先从update.zip包的制作开始,然后是Android系统的启动模式分析,Recovery工作原理,如何从我们上层开始选择system

Simba's 3949

Android Recovery UI浅析1——概览

最近在作一个在recovery中显示文字的工作,所以对这块研究较多,现在把研究的一点新的结果分享出来,如果有什么错误也欢迎大家在下面评论。   Android的Recovery中,利用 boottable/recovery下的minui库作为基础,采用的是直接存取framebuffer的方式,来完成recovery中所需的各种UI的绘制。 在recovery的源码中,跟ui显示相

rockly89的博客 5101

Spark | Stage进度条展示(showConsoleProgress)

spark.version = 2.4.4 在执行Spark任务中,经常会看到以下类似的Stage进度日志信息,如下: [Stage 0:> (0 + 0) / 1753] [Stage 0:> (0 + 65) / 1753] [Stage 0:>

俗人 4070

Flask-python-前端实时显示后端处理进度

前言    今天上班时,突然有人在群里问前端如何实时显示后端处理进度的问题,想了想觉得挺有意思,于是网上看看材料,自己简单的实践了一个以做学习记录。 1. Python 后端进度条-交互逻辑: 思路:    1. 点击页面的“展示进度条测试数据”按钮button,向后台发送数据处理请求;    2. 后台处理数据: process_data,做主要的业务逻辑处理(示例仅简单显示循环数);    3. 后台展示数据: show_progress,通过一个接口过去上一步接口设置的公共变量值;    4. 前端

~~信我有鬼~~ 1万+
上一篇: 在Windows 7中彻底移除某文件类型的文件关联信息
下一篇: 分享一种兼具UD、U+V2高端隐藏,支持UEFI和4GB大文件的U启制作思路
zyphio
博客等级 码龄18年 69粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值