RK3288 android7.1 实现ota升级时清除用户数据
一,OTA简介(整包,差分包)
OTA全称为Over-The-Air technology(空中下载技术),通过移动通信的接口实现对软件进行远程管理。

1. 用途:
OTA两种类型最大的区别莫过于他们的”出发点“(我们对两种不同升级包的创建,并使用它进行OTA升级)。我们创建整包时不需要old包,可以直接使用base包进行升级,因此整包一般用来升级整个固件【∞ -> B】,而差分包一般用于两个特定的点【A->B】。
2. 大小:
通常情况下,整包的大小比较接近于整个固件的镜像。而差分包并没有特定的限制,可以和整包差不多大,也可以只有几KB,不过通常情况下,差分包要比整包小得多。
3. 内容:
OTA整包从大小和内容上都比较接近完整的固件镜像。而差分包更像是一个patch,我们可以认为是A和B差异的部分。

二,问题现象
ota整包升级后(ota升级相当于优化上一个系统,内部原本的数据是不会清除掉),上个系统里的残留数据导致升级后出现问题(比如:apk内部无法联网)。
三,修改步骤
1. 设置OPTIONS.wipe_user_data
把OPTIONS.wipe_user_data设为True,再编译生成ota升级包(ota升级后可格式化data分区)。
源码:build/tools/releasetools/ota_from_target_filesdiff --git a/build/tools/releasetools/ota_from_target_files.py b/build/tools/releasetools/ota_from_target_files.py
index e88fa7d832..710c6797c8 100755
--- a/build/tools/releasetools/ota_from_target_files.py
+++ b/build/tools/releasetools/ota_from_target_files.py
@@ -150,7 +150,7 @@ OPTIONS.verify = FalseOPTIONS.require_verbatim = set()OPTIONS.prohibit_verbatim = set(("system/build.prop",))OPTIONS.patch_threshold = 0.95
-OPTIONS.wipe_user_data = False
+OPTIONS.wipe_user_data = TrueOPTIONS.omit_prereq = FalseOPTIONS.downgrade = FalseOPTIONS.extra_script = None
2. 进入系统时需要输入Android密码问题
OPTIONS.wipe_user_data设为True后可能会出现进入系统时需要输入Android密码, 是因为data分区数据有问题(并不是因为加密)。
系统默认data分区格式是f2fs,但是可能会有出入,导致data分区被识别为ext4,导致如上问题(输入Android密码)
3. 解决需要输入Android密码问题
打上如下补丁:
diff --git a/bootable/recovery/updater/install.cpp b/bootable/recovery/updater/install.cpp
index 2651ac6874..43887dac4d 100644
--- a/bootable/recovery/updater/install.cpp
+++ b/bootable/recovery/updater/install.cpp
@@ -343,6 +343,7 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {goto done;}device = getDevicePath(location);
+ printf("[fy][start]: fs_type=%s\n",fs_type); //加打印看fs_type的值,如果为f2fs则没问题if (strcmp(partition_type, "MTD") == 0) {mtd_scan_partitions();const MtdPartition* mtd = mtd_find_partition_by_name(device);
@@ -388,15 +389,16 @@ Value* FormatFn(const char* name, State* state, int argc, Expr* argv[]) {goto done;}const char *f2fs_path = "/sbin/mkfs.f2fs";
- const char* const f2fs_argv[] = {"mkfs.f2fs", "-t", "-d1", location, num_sectors, NULL};
+ const char* const f2fs_argv[] = {"mkfs.f2fs", "-t", "-d1", device, num_sectors, NULL};int status = exec_cmd(f2fs_path, (char* const*)f2fs_argv);free(num_sectors);if (status != 0) {printf("%s: mkfs.f2fs failed (%d) on %s",
- name, status, location);
+ name, status, device);result = strdup("");goto done;}
+ printf("[fy][end]: fs_type is f2fs!\n");result = location;#endif} else {
如果打印看fs_type的值为ext4,则需要去 device目录下搜所有的 recovery*fstab 文件,看看是不是有fstab中的data分区是被定义成ext4格式,如果有的话把它改成f2fs格式。
相关文章:
RK3288 android7.1 实现ota升级时清除用户数据
一,OTA简介(整包,差分包) OTA全称为Over-The-Air technology(空中下载技术),通过移动通信的接口实现对软件进行远程管理。 1. 用途: OTA两种类型最大的区别莫过于他们的”出发点“(我们对两种不同升级包的创建&…...
okHttp的https请求忽略ssl证书认证
使用okhttp请求第三方https接口返回异常 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target意思就是非安全的调用&#…...
在Java中使用Spring Boot设置全局的BusinessException
在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站:…...
Java 异常处理 -- Java 语言的异常、异常链与断言
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 009 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台 Spring Cloud Nacos 是 Spring Cloud 生态系统中的一个子项目,提供了服务注册与发现、配置管理等功能,基于 Alibaba 开源的 Nacos 项目。Nacos 是一个易于使用的动态服务发现、配置管…...
java多线程临界区介绍
在Java多线程编程中,"临界区"是指一段必须互斥执行的代码区域。当多个线程访问共享资源时,为了防止数据不一致或逻辑错误,需要确保同一时刻只有一个线程可以进入临界区。Java提供了多种机制来实现这一点,例如synchroniz…...
基于JSP的超市管理系统
你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP MyBatis 工具:IDEA/Eclipse、Navicat、Maven 系统展示 员工管理界面图 管…...
一文讲清:生产报工系统的功能、报价以及如何选择
最近这几年,企业越来越注重生产的速度和成本,尤其是“性价比”,生产报工系统已经变成了制造业里不可或缺的一部分。不过,市场上生产报工系统的选择太多,价格也都不一样,这就给很多企业出了个难题࿱…...
blender bpy将顶点颜色转换为UV纹理vertex color to texture
一、关于环境 安装blender的bpy,不需要额外再安装blender软件。在python控制台中直接输入pip install bpy即可。 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 本文所给出的例子是https://download.csdn.net/downl…...
Flink Sql:四种Join方式详解(基于flink1.15官方文档)
JOINs flink sql主要有四种连接方式,分别是Regular Joins、Interval Joins、Temporal Joins、lookup join 1、Regular Joins(常规连接 ) 这种连接方式和hive sql中的join是一样的,包括inner join,left joinÿ…...
(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第3节(泛型约束)
14.3 泛型约束 正如我们所看到的,您在泛型类的方法中可以做的事情非常少。您可以传递它(即分配它)并执行上面我介绍的泛型类型函数允许的有限操作。 为了能够执行泛型类的实际操作,通常需要对其进行约束。例如,…...
C语言详解(预编译)
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
解决el-table表格拖拽后,只改变了数据,表头没变的问题
先看看是不是你想要解决的问题 拖拽后表头不变的bug修复 这个问题一般是使用v-for对column的数据进行循环的时候,key值绑定的是个index导致的,请看我上篇文章:eleplus对el-table表格进行拖拽(使用sortablejs进行列拖拽和行拖拽):-…...
简单塔防小游戏
学习目标:熟悉塔防游戏核心战斗 游戏画面 项目结构目录 核心代码: if ( Input.GetMouseButtonDown(0)){if (EventSystem.current.IsPointerOverGameObject()false){//开发炮台的建造Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);Rayca…...
高考之后第一张大流量卡应该怎么选?
高考之后第一张大流量卡应该怎么选? 高考结束后,选择一张合适的大流量卡对于准大学生来说非常重要,因为假期期间流量的使用可能会暴增。需要综合考虑多个因素,以确保选到最适合自己需求、性价比较高且稳定的套餐。以下是一些建议…...
如何从微软官方下载Edge浏览器的完整离线安装包
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 正文内容 📒🚀 官方直链下载🚬 手动选择下载🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网上搜索Microsoft Edge浏览器的离线安装包时,很多用户都会发现大部分都是在线安装包,无法满足他们在无网络环境下进…...
git 常用的命令
git 常用的命令 一、基础命令1.1 初始化1.2 添加文件1.3 查看缓存区中的文件1.4 查看上次提交到缓存区中的文件1.5 文件从缓存区取出1.6 提交文件1.6 查看提交中包含的文件1.7 查看commit记录 二、回退命令2.1 git reset2.2 将文件从暂存区取出2.3 将文件从仓库取出2.3.1 保留工…...
【StableDiffusion】Embedding 底层原理,Prompt Embedding,嵌入向量
Embedding 是什么? Embedding 是将自然语言词汇,映射为 固定长度 的词向量 的技术 说到这里,需要介绍一下 One-Hot 编码 是什么。 One-Hot 编码 使用了众多 5000 长度的1维矩阵,每个矩阵代表一个词语。 这有坏处,…...
计算机网络(2) 网络层:IP服务模型
一.Internet Protocol在TCP/IP四层模型中的作用 第三层网络层负责数据包从哪里来到哪里去的问题。传输层的数据段提交给网络层后,网络层负责添加IP段,包含数据包源地址与目的地址。将添加IP段的数据包交由数据链路层添加链路头形成最终在各节点传输中所需…...
新人学习笔记之(初识C语言)
一、C语言的简介 1.C语言:1978年1月1日美国贝尔实验室推出的一门非常哇塞计算机语言 2.计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 二、C语言能做什么 1.操作系统 2.驱动开发 3.引擎开发 4.游戏开发 5.嵌入式开发 三、学习C语言的好处 …...
解锁汽车ECU诊断新可能:ECUBus-Pro开源工具的全场景应用指南
解锁汽车ECU诊断新可能:ECUBus-Pro开源工具的全场景应用指南 【免费下载链接】ECUBus ECU bus tool, UDS over CAN, CAN-FD, Ethernet and so on. 项目地址: https://gitcode.com/gh_mirrors/ec/ECUBus ECUBus-Pro是一款功能强大的开源汽车ECU开发工具&#…...
Python实战:5分钟搞定小红书自动点赞脚本(附完整代码)
Python实战:5分钟实现小红书自动化互动工具开发指南 在当今内容爆炸的时代,社交媒体运营已成为个人品牌和商业推广的重要阵地。小红书作为国内领先的生活方式分享平台,其互动数据直接影响内容曝光和账号权重。对于开发者而言,掌握…...
wan2.1-vae开源可部署:支持国产操作系统(麒麟/UOS)的适配方案
wan2.1-vae开源可部署:支持国产操作系统(麒麟/UOS)的适配方案 1. 平台介绍 muse/wan2.1-vae 文生图是基于 Qwen-Image-2512 模型的AI图像生成平台,支持中英文提示词,可生成高质量、高分辨率的图像。该平台特别针对国…...
热门编程语言全攻略:从入门到职业选手
目录 引言:为什么选择一门“热门”编程语言 1.1 编程语言热度背后的产业逻辑 1.2 初学者如何选择第一门语言 1.3 全栈/进阶者如何扩展技术栈 Python:万能胶水与人工智能首选 2.1 语言定位与核心应用领域 2.2 语法特点:简洁优雅的伪代码 2.3 学…...
ESP32+BC260Y+L76K开发板实战:NB-IoT户外定位数据上传MQTT全流程(附避坑指南)
ESP32BC260YL76K开发板实战:NB-IoT户外定位数据上传MQTT全流程(附避坑指南) 在物联网应用快速发展的今天,户外定位数据的采集与传输已成为智慧农业、资产追踪、环境监测等领域的核心需求。ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯…...
2026年江苏省职业院校技能大赛(学生组)信息安全管理与评估(技能操作阶段)竞赛样题
2026年江苏省职业院校技能大赛(学生组)信息安全管理与评估(技能操作阶段)竞赛样题 文章目录2026年江苏省职业院校技能大赛(学生组)信息安全管理与评估(技能操作阶段)竞赛样题任务1&a…...
给嵌入式新手的Cortex-M0内核超详细图解:从寄存器到中断,一篇搞定STM32/GD32入门
给嵌入式新手的Cortex-M0内核超详细图解:从寄存器到中断,一篇搞定STM32/GD32入门 刚拿到STM32开发板时,看着密密麻麻的引脚和上百页的芯片手册,我完全不知道从哪里开始。直到导师指着原理图说:"把芯片想象成一个忙…...
Outfit字体全攻略:5大核心优势与零基础实战指南
Outfit字体全攻略:5大核心优势与零基础实战指南 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体作为一款专业的开源无衬线字体,凭借其完整的9种字重体系和现代设…...
深度 | 电子材料研发(光刻胶/OLED等)迈入智能时代,当电子材料研发进入“GPT时代”,企业该如何重构创新引擎?
【电子材料系列专题1】在半导体、显示、先进封装与电子化学品领域,材料始终决定性能上限。无论是光刻胶、OLED发光材料、封装胶,还是高纯电子特气,随着制程逼近纳米乃至埃米级节点,热力学稳定性、光化学反应精度、流变特征和痕量杂…...
避坑指南:SpringBoot整合Drools 7.20时热部署冲突的解决方案
SpringBoot与Drools 7.20热部署冲突深度排查指南 当SpringBoot的devtools热部署功能遇上Drools规则引擎,就像两个高效率的工人同时修改同一台机器——看似都能独立工作,组合时却可能引发难以察觉的运行时故障。本文将带您深入这个典型的技术冲突现场&…...
