OTA升级常见问题及流程

1.日志查看

通过查看recovery日志分析问题
通过adb shell logcat -v time >upgradelog.txt,输出升级过程日志,查看问题卡在何处。
通过adb pull cache/recovery ,查看升级后的日志

2. SELinux权限QA

万能规则解决SELinux中绝大部分的avc denied问题

2.1示例一:

在这里插入图片描述
这是一个典型的SELinux权限问题,下面让我们一步步的来破解分析。
分析过程:
缺少什么权限: { write }权限
谁缺少权限: scontext=u:r:kernel:s0
对哪个文件缺少权限: tcontext=u:object_r:block_device
什么类型的文件: tclass=blk_file
解决方法:添加对应的规则,这里建议添加在对应的kernel.te里面

allow kernel block_device:blk_file write;
2.2示例二:

在这里插入图片描述
解决方法:按照示例一的流程,这里建议添加在对应的platform_app.te里面添加对应的规则。

allow platform_app app_data_file:file execute
2.3注意

有时候avc denied的log不是一次性显示所有问题,要等你解决一个权限问题之后,才会提示另外一个权限问题。比如提示确实某个目录的read权限,你加入read之后,再显示缺少write权限,要你一次次一次试,一次一次加。这时你可以简单粗暴写个rw_dir_perms,这个权限包含了{open search write …}等等很多权限。可以查看external/sepolicy/global_macros来了解更多权限声明 (相对应的在Android 7和Android 8对应的就是external/sepolicy/global_macros,如果有定义的话 );
要加入的权限很多时,可以用中括号,比如:

allow engsetmacaddr  vfat:dir { search write add_name create};
2.4关闭SELinux权限检查

遇到问题不确定是否由于selinux问题造成,可先在adb shell 下,输入setenforce 0,让selinux失效,看是否问题还出现。以此可以澄清是否由selinux造成的问题。

3.升级包制作

3.1整包

1.source build/envtsetup.sh
2.lunch 31(此处选择项目中实际的选项)
3.make otapackage -j8

3.2差分包

1.执行make otapackage -j8 然后拷贝资料

out/target/product/msm8909/obj/PACKAGING/target_files_intermediates/msm8909-target_files-eng.smart-jenkins.zip

到编译根目录,改名为old.zip

2.重复步骤1,改名为new.zip

3.执行命令,制作差分包

./build/tools/releasetools/ota_from_target_files -v --block -p out/host/linux-x86/ -k build/target/product/security/testkey -i old.zip new.zip update.zip

得到差分包update.zip

4.升级包上传&升级任务建立

Type
车机型号针对不同的车机型号,可以指定升级任务对应的型号
车机版本号可以指定当前车机版本号为多少的全部升级
设备ID车辆序列号,可以指定设备序列号
任务类型MCU升级或者Android系统升级

例如:产线上,某款ABC某批次版本号为v0.7.1 的车机出现严重BUG,线刷成本巨大,现针对v0.7.1 序列为xxxx-xxxx发布升级任务进行在线升级(版本回退或者升级).

5.版本校验&升级包下载

1.读取车机型号/车机版本号/设备ID,从后台服务器获取升级任务
2.升级任务校验,查看升级任务详情,比较版本号等信息,确认是否需要升级.
3.下载升级包,查看本地是否有待下载的升级包,是否是同一升级包,是否需要继续下载或者重新下载

6.升级流程

1.写入缓存目录
将升级包由下载目录拷贝至升级目录data/cache/
2.升级包校验
RecoverySystem.verifyPackage…
3. 安装升级包
RecoverySystem.installPackage…
4.升级结果反馈
车机重启后,校验版本号,检测升级结果,上传服务器

其他升级方式

1.通过Recovery SD卡方式

将刷机包拷贝到sd 卡中。通过adb reboot recovery 方式重启进入recovery 模式进行升级;
在这里插入图片描述

然后找到升级包在sd 卡中的位置,点击就能升级了。

2.通过Android adb命令方式
adb root
adb push update.zip /data/update.zip

将升级包导入手机,这个步骤,到时候我们就可以直接通过apk 下载升级包到/data/ 目录或/cache 目录或SD 下。
接下来我们在cache 目录下创建recovery 文件夹:

adb shell "mkdir /cache/recovery"

然后在recovery 目录下创建文件command

adb shell "touch /cache/recovery/command"

下一步就是往command 这个文件中写入:

adb shell
echo "--update_package=/data/update.zip" > /cache/recovery/command
sync

最后我们重启到recovery,系统就会自动进行更新了:

adb reboot recovery
  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android OTA(Over-The-Air)升级是指通过网络传输直接在设备上进行系统升级的一种方法。下面简要介绍Android OTA升级流程以及常见问题分析。 Android OTA升级流程通常包括以下几个步骤: 1. 系统准备:开发者根据新版本的要求,为设备准备升级所需的系统文件。这些文件包括操作系统文件、应用程序文件以及升级脚本等。 2. 设备请求:设备通过连接到网络,并向服务器请求最新的系统升级。服务器根据设备的型号和当前系统版本,判断是否需要进行升级。 3. 传输升级文件:如果服务器确认设备需要进行升级,那么就会将升级文件传输给设备。这通常是通过HTTP或FTP等协议进行数据传输。 4. 升级验证:设备接收到升级文件后,会进行文件校验,以确保文件的完整性和一致性。 5. 升级安装:设备在校验通过后,会进行系统升级安装。这通常会涉及到文件解压、系统分区扩展等操作。 6. 安装后处理:升级完成后,设备会重新启动并进行一些后期处理工作,例如数据迁移、应用优化等。 常见问题分析: 1. 升级失败:升级过程中可能出现各种原因导致升级失败,如网络中断、升级文件损坏、设备存储空间不足等。解决方法可以包括重新尝试升级、检查网络连接、清理设备存储空间等。 2. 兼容性问题:新版本的系统可能对设备硬件或软件要求更高,而一些老旧设备可能无法满足这些要求。这可能导致升级后设备性能下降或功能不可用。解决方法可以是提供适配的系统版本或更新设备硬件。 3. 数据丢失:升级过程中可能导致设备的数据丢失,包括联系人、短信、应用程序数据等。为了避免这种问题,可以提醒用户备份数据或提供数据迁移工具。 4. 升级时间过长:升级过程可能需要较长时间,尤其是在升级文件较大或设备性能较低的情况下。解决方法可以是优化升级文件的大小和传输速度,或提供快速升级选项。 总结:Android OTA升级通过网络直接在设备上进行系统升级流程包括准备、请求、传输、验证、安装和处理。常见问题包括升级失败、兼容性问题、数据丢失和升级时间过长等,需要通过合适的解决方法来处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值