Android OTA 系统升级 笔记

OTA和Recovery系统升级流程介绍 本文介绍了Android原生OTA和Recovery升级过程步骤.进入升级- 1.1 正常启动和进入Recovery的区别下面给出了升级流程的简单示意图。 上图中的上下两个部分,上面一部分是正常的启动模式,下面一部分为Recovery模式。正常的启动模式是从boot.img启动系统(Main System),而recovery模式则是从reovery.img启动系统;(reovery.img只 阅读详情

一、编译内核
进入lichee
1、选择配置
root@ceshi-web:/opt/android-source/T3/lichee# ./build.sh config

Welcome to mkscript setup progress
All available chips:
0. sun8iw11p1
Choice: 0
All available platforms:
0. android
1. androidm
2. dragonboard
3. linux
4. camdroid
Choice: 1
All available kernel:
0. linux-3.10
Choice: 0
All available boards:
0. t3-mp1
1. t3-mp3
2. t3-p1
3. t3-p2
4. t3-p3
Choice: 4

2、开始编译。得等段时间
root@ceshi-web:/opt/android-source/T3/lichee# ./build.sh
INFO: —————————————-
INFO: build lichee …
INFO: chip: sun8iw11p1
INFO: platform: androidm
INFO: kernel: linux-3.10
INFO: board: t3-p3
INFO: output: out/sun8iw11p1/androidm/t3-p3
INFO: —————————————-
INFO: build buildroot …
external toolchain has been installed
INFO: build buildroot OK.
INFO: build kernel …
INFO: prepare toolchain of sun8iw11p1…

二、编译源码
进入android源码目录
1、配置编译需要的环境变量
root@ceshi-web:/opt/android-source/T3/androidm# source build/envsetup.sh
including device/asus/deb/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/fugu/vendorsetup.sh
including device/generic/mini-emulator-arm64/vendorsetup.sh
including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
including device/generic/mini-emulator-mips/vendorsetup.sh
including device/generic/mini-emulator-x86_64/vendorsetup.sh
including device/generic/mini-emulator-x86/vendorsetup.sh
including device/htc/flounder/vendorsetup.sh
including device/lge/hammerhead/vendorsetup.sh
including device/moto/shamu/vendorsetup.sh
including device/softwinner/common/vendorsetup.sh
including device/softwinner/t3-p1/vendorsetup.sh
including device/softwinner/t3-p3/vendorsetup.sh
including sdk/bash_completion/adb.bash

2、选择要编译的类型
root@ceshi-web:/opt/android-source/T3/androidm# lunch

You’re building on Linux

Lunch menu… pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. aosp_deb-userdebug
8. aosp_flo-userdebug
9. full_fugu-userdebug
10. aosp_fugu-userdebug
11. mini_emulator_arm64-userdebug
12. m_e_arm-userdebug
13. mini_emulator_mips-userdebug
14. mini_emulator_x86_64-userdebug
15. mini_emulator_x86-userdebug
16. aosp_flounder-userdebug
17. aosp_hammerhead-userdebug
18. aosp_hammerhead_fp-userdebug
19. aosp_shamu-userdebug
20. t3_p1-eng
21. t3_p1-user
22. t3_p3-eng
23. t3_p3-user

Which would you like? [aosp_arm-eng] ^C
root@ceshi-web:/opt/android-source/T3/androidm# lunch

You’re building on Linux

Lunch menu… pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. aosp_deb-userdebug
8. aosp_flo-userdebug
9. full_fugu-userdebug
10. aosp_fugu-userdebug
11. mini_emulator_arm64-userdebug
12. m_e_arm-userdebug
13. mini_emulator_mips-userdebug
14. mini_emulator_x86_64-userdebug
15. mini_emulator_x86-userdebug
16. aosp_flounder-userdebug
17. aosp_hammerhead-userdebug
18. aosp_hammerhead_fp-userdebug
19. aosp_shamu-userdebug
20. t3_p1-eng
21. t3_p1-user
22. t3_p3-eng
23. t3_p3-user

Which would you like? [aosp_arm-eng] 23

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=t3_p3
TARGET_BUILD_VARIANT=user
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=MMB29M

3、拷贝之前在lichee中编译好的bImage、modules。
root@ceshi-web:/opt/android-source/T3/androidm# extract-bsp
/opt/android-source/T3/androidm/device/softwinner/t3-p3/bImage copied!
/opt/android-source/T3/androidm/device/softwinner/t3-p3/modules copied!

4、开始编译(第一次编译大概要3、4个小时,可以去做其他的事情了~~~)
root@ceshi-web:/opt/android-source/T3/androidm# make -j8

PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=t3_p3
TARGET_BUILD_VARIANT=user
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=MMB29M
OUT_DIR=out
。。。等待一段时间后。。。
Creating filesystem with parameters:
Size: 1610612736
Block size: 4096
Blocks per group: 32768
Inodes per group: 8192
Inode size: 256
Journal blocks: 6144
Label: system
Blocks: 393216
Block groups: 12
Reserved block group size: 95
Created filesystem with 2000/98304 inodes and 133410/393216 blocks
Install system fs image: out/target/product/t3-p3/system.img
out/target/product/t3-p3/system.img+out/target/product/t3-p3/obj/PACKAGING/recovery_patch_intermediates/recovery_from_boot.p maxsize=1644331392 blocksize=4224 total=521892559 reserve=16612992
make completed successfully (05:12 (mm:ss))

5、制作升级包
root@ceshi-web:/opt/android-source/T3/androidm/build# get_uboot
No kernel param, parse it from .buildconfig
copying tools file
copying configs file
。。。省略。。。
root@ceshi-web:/opt/android-source/T3/androidm# make otapackage
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=t3_p3
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=MMB29M
OUT_DIR=out
。。。等待一段时间后。。。
Merge verity_block
Dm-Verity hash tree and metadata ready !
running: openssl pkcs8 -in build/target/product/security/testkey.pk8 -inform DER -nocrypt
running: java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpeaT07m out/target/product/t3-p3/t3_p3-ota-20171214.zip
done.

make completed successfully (05:35 (mm:ss))

Android OTA升级原理 - 实现流程(整理一) Android OTA实现流程分析OTA升级概述制作升级包自动生成update.zip升级包手动生成update升级包增量包目录结构升级包写入设备分区Android的三种工作模式Recovery升级模式 OTA升级概述 OTA(Over-the-AirTechnology)是指手机终端通过无线网络下载远程服务器上的升级包,对系统或应用进行升级的技术。有关网络部分不做过多讨论,本文重点放在系统升级这... 阅读详情

相关推荐

Android 7.0 OTA升级(高通)

文档中主要描述 Full OTA 升级和 Incremental OTA 两种升级方式。

Framework-coder的博客 1万+

深入Android系统(一)Build系统

深入Android系统这本书是以Android5.0为基础讲解,但本人使用的是Android9.0的源码,所以和原书内容会有些出入。 对于Android的构建系统,在Android7.0之后Google就已经使用Soong构建系统,旨在取代 Make。它利用 Kati GNU Make 克隆工具和 Ninja 构建系统组件来加速 Android 的构建。这里是官方构建传送门 读书是一个引导学习的过程,读此书的目的是全面了解Android系统,当有一个全面了解后再来看新版特性吧。5.0 确实老了点。哈.

apigfly的博客 4586

Android 系统升级流程分析

Android支持Recovery模式。在某些操作之后,系统会自动重启并进入到Recovery模式,用户按组合键开机(HOME+POWER),也可进入Recovery模式。该模式提供如下功能:1、擦除用户数据恢复系统到出厂模式,即擦除用户数据和缓存数据。2、系统升级系统升级的概念比较广,包括系统文件的升级、恢复损害的系统数据、的升级,以及应用软件的维护,甚至影音文件的下载。系统升级需要使用特定的升级包,Android使用OTA[1]升级包,其初衷在于可以发挥广域无线通信链路的优势,如3G。

weixin_49303682的博客 2623

001原始编译全志r6平台tinav3.0.2系统

  001原始编译全志r6平台tinav3.0.2系统 2018/6/8 11:32 版本:V1.0     开发板:R6 SDK:tina v3.0.2     1、01原始编译全志r16平台tinav3.0系统: rootroot@cm88:/home/wwt/tina_v3.0.2$ rootroot@cm88:/home/wwt/tina_v3.0.2$ ll 总...

南岭笑笑生之家 3360

告别MATLAB!用Python的PYPOWER搞定电力系统潮流计算(附Case30完整代码)

本文介绍了如何从MATLAB迁移到Python,使用PYPOWER工具包进行电力系统潮流计算。通过详细的环境准备、数据接口兼容性实践、潮流计算实现及最优潮流计算进阶,帮助工程师和学生无缝过渡到Python生态。文章还展示了结果处理与可视化技巧,并附有Case30完整代码示例。

weixin_30411819的博客 300

Abaqus 单元与全局刚度矩阵导出实战指南:从INP修改到结果解析

本文提供了Abaqus中导出单元刚度矩阵和全局刚度矩阵的完整实战指南。通过详细步骤讲解INP文件修改、关键指令插入及结果文件解析,帮助工程师、研究人员和二次开发者深入理解有限元软件内核,实现理论验证、二次开发与深度问题调试。

k8s6orchestrator的博客 900

全志Android系统编译及镜像生成过程分析

1 source ./build/envsetup.sh 这步主要就是提供一些shell的function命令工具,具体可通过hmm命令查看envsetup.sh提供的所有命令: Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment: - lunch: ...

jklinux的博客 4932

【题解】【中国大学MOOC】(北京大学)人工智能与信息社会考试——期末考试

1.在Alpha-Beta剪枝算法中,我们把一个结点可能取值的上界记作____值,下界记作____值。 编号 选项 A 以上都不对 B Beta,Alpha C Alpha,Beta D Max,Min 2.属于非完全信息博弈的游戏是 编号 选项 A 围棋 B 井字棋 C 军棋 D 黑白棋 3.图中的剪枝过程称为____剪枝 ...

葑鈊丶 1万+

Android 64位变32位

本篇博文介绍将Android改为32系统的方法。

azhengye的专栏 2万+

SAP Build Work Zone standard edition 订阅报错 OIDC trust missing 的成因与完整解决路径

摘要:用户订阅SAP Build Work Zone时遇到422错误,提示未配置OpenID Connect信任。该错误表明业务用户需通过SAP Cloud Identity Services的OIDC协议认证,而当前子账户仅配置了SAML信任或未配置信任。解决方法是进入子账户的Trust Configuration页面,使用Establish Trust功能建立与SAP Cloud Identity Services的OIDC信任关系。这是SAP新版服务的强制要求,SAML协议已不被支持。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

194、产线 Camera 校准与测试:终检测试项、规格线制定与量产数据监控

摘要: 文章通过"绿屏门"案例揭示了产线Camera校准测试中的关键问题,提出了系统性改进方案。在终检测试方面,建议增加多增益暗电流测试、混合光源色温测试和径向亮度梯度测试,覆盖用户真实场景。规格线制定强调用CPK替代固定百分比,区分硬软规格并建立动态调整机制。量产监控需关注参数趋势、边界模组分布,构建失效模式数据库。实践建议包括测试冗余设计、规格余量预留、自动化监控、供应商数据共享和人工抽检保留。文章指出Camera产线质量管控需形成"测试设计-规格优化-数据监控"闭环,以数据驱动决策避免客诉风险。

sundong_81的博客 192

第2章:Android的编译环境--build系统

2.0 build简介 Android的build系统基于GNU Make 和shell 构建的一套编译环境。这套系统定义了大量的变量和函数,无论编写一个产品的配置文件还是一个模块的Android.mk文件,都不用直接和GNU Make打交道,只需要理解Android提供的编译变量和函数,就能够方便的将我们开发的模块加入到Android的build体系中。 Android系统build分类: 1、

zcj的博客 7627

C#上位机实战:PLC与检测设备无缝对接,构建产品质量实时判定系统

本文分享了基于C#开发的汽车零部件质量检测系统实现经验。系统采用三层架构:设备层(PLC/视觉相机/三坐标)、通信层(OPC UA/SDK/串口)和应用层(数据采集/判定/存储)。重点解决了三大技术难点:1)通过OPC UA订阅模式将PLC通信延迟从500ms降至50ms;2)反编译厂商Demo破解视觉SDK对接难题;3)采用时间戳+产品ID实现多设备数据同步。系统上线后质检人员减少67%,误判率降至0.5%,数据追溯效率显著提升。文章强调工业场景下稳定性优先于技术复杂度,实用经验值得借鉴。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 799

MTT AIBOOK:预装“龙虾”的AI笔记本,12个Skills一并就绪

从使用体验来看,AIBOOK的核心价值在于“做减法”:减少了配置环境的复杂性,减少了多设备切换的麻烦,以及解决了性能和便携性难以兼顾的问题。当AI Agent进入快速发展阶段,这种“开箱即用”的生产力基础,正是开发者所需的“新计算机”。

科技大视野 — 科技大视野,行走科技发展前沿 3

〖Python接口自动化测试实战篇④〗- 接口自动化测试详解

[接口测试] 是相对来说和我们的功能测试 [最为接近的一种自动化测试手段] ,所以我们首先来学习接口测试的内容。 实现接口的开发与接口的测试,在我们的思维上、想法上、面向的态度上都是不一样的。所以大家要有一个思维上的转换,要认识了解一下 接口测试到底是做什么的、它的功能、意义在哪里。...

易编橙 · 终身成长社群,相遇已是上上签! 5万+

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 532

Android 几种系统升级方式详解

◆ /cache/recovery/command:recovery命令,由主系统写入,每一行就是一条命令,是以下命令的组合:● --wipe_data:擦除用户数据,会清除/data分区和/cache分区● --wipe_cache :擦除/cache分区● --update_package=path: 表示要进行OTA升级,recovery使用路径为path的OTA升级包● --send_intent=anystring: 传递的intent。将system.img镜像写入到系统的system分区。

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OTA常见方案分析(差分升级 全量升级 AB面升级 Recovery系统升级)

1.全量升级:   完整的下载新版本固件,下载完成后将固件搬运到APP程序运行的位置。(一般来说是将APP从片外flash搬运到片内flash上)。搬运完成后校验通过后重启APP。 2.差分升级:   利用算法,做出原版APP和新版APP程序的差分包,将差分包下载到flash,内部的BootLoader程序在利用算法将新版APP合成,合成后在搬运,搬运后校验,重启。   一般制作出来的差分包只有原包的5%左右。省空间! 服务器端: 生成差分包,bsdiff算法 1.对old文件中所有子字符串形成一个字典

qlexcel的专栏 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

项目实战:OTA系统升级

对之前做的OTA系统升级项目做一个总结,包括4个部分:OTA系统的介绍,OTA包的制作,代码结构以及待改善的问题。        1. OTA介绍:        OTA 全称 over the air ,   OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了完全升级、增量升级模式,可以通过 SD 卡升级,也可以通过网络升级。在系统升级中,主要要做

月出惊弓鸟的博客 2861

【免费下载】 Payload-Dumper-Android:一款OTA提取工具,简化Android系统升级

Payload-Dumper-Android 是一款针对Android设备的OTA(Over-The-Air)升级提取工具。它旨在帮助用户轻松提取OTA升级文件,从而便于定制和安装系统更新。通过友好的用户界面和强大的提取功能,这款应用成为Android爱好者和开发者的重要助手。 ## 项目技术分析 Payload-Dumper-Android 的核心是由Rust语言编写的本地库,该库负责处理O...

gitblog_00978的博客 9940

Android OTA 升级专栏文章导读

从 2017 年起,我陆续写了一些 Android OTA 升级相关的文章,主要介绍从 Android 7.1 开始引入的 A/B 升级系统,包括从早前的 A/B 系统,到后来的动态分区,再到最近的虚拟 A/B 分区,以及最新的一些 Android OTA 话题。毫不夸张的说,这是目前全网关于 Android OTA 升级最系统,最全面的专栏,没有之一。

洛奇看世界 1万+

Android Recovery OTA升级(二)—— Recovery源码解析

目录目录 Recovery源码分析 概述 main函数 输出重定向 填充fstab结构体 挂载cache分区 获取Recovery命令参数 分析recovery命令 install_package load_keys加载公钥原文件 verify_file对升级包进行签名校验 mzOpenZipArchive-打开升级包获取相关信息 try_update_binary-ota真正执行的地方Recove

小一的专栏 1万+

OTA升级

摘要:本文介绍了将OTA升级功能封装为接口提供给APP的实现方案。首先分析了手动升级流程,包括A/B系统升级步骤和编译配置要点。然后通过源码分析,梳理了UpdateEngine的使用方式,包括bind方法注册回调、applyPayload方法触发升级等关键流程。最后设计了OTA升级接口实现方案,包含解压升级包、读取参数文件、调用系统升级服务等步骤,并详细说明了参数处理方法和回调机制实现。该方案将复杂升级流程封装为简单接口,方便APP集成调用。

m0_49832514的博客 1532

OTA制作及升级过程笔记

1、概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理解和防止以后遗忘,所以写这篇文档进行一个总结和梳理,以便日后查阅回顾。文档主要包括两部分,第一部分为OTA升级包的制作过程分析,第二部分为Recovery模式下OTA升级包安装过程的分析,其中包括Recovery模式分析及服务流程。 1.2   参考文献 《Recovery 开发指导》

teliduxing1029的专栏 2万+

Android OTA升级看这一篇就够了

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

m0_56255097的博客 5516
上一篇: C盘瘦身
下一篇: 欢迎使用优快云-markdown编辑器---学习markdown
changs_roid
博客等级 码龄11年 6粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值