HHz的编程日记 - Android
type: channel
link: https://huanghaozi.com/index.php/tag/Android/
items: Android刷机需要知道的一些事

Android刷机需要知道的一些事
type: item
date: 2020-07-30T13:37:00+08:00
description: Android系统广泛应用于手机、平板、电视等嵌入式智能设备，“刷机”，顾名思义，即刷写这些Android设备的flash芯片，以达到更换或优化操作系统的目的。可能有很多朋友（俗称发烧友）玩过刷机，但随着时代的进步，越来越多的人采取刷机精灵、刷机助手等软件进行刷机，而这些软件，将传统刷机执行的命令都封装成按钮隐藏了起来，导致越来越多的人难以理解刷机软件背后的运作原理。今天这篇文章将向你展示传统的使用命令的刷机方法，以及刷机过程中一些东西的运作原理。刷机的基本流程总体上看，刷机主要有以下几个流程：前导知识Android系统分区和电脑一样，Android设备上也存在分区的概念，和Windows系统的C、D、E盘的概念基本一致，但又有所不同。正如我们在使用过程中发现的一样，安卓手机只有内部存储的概念，那么分区又是怎么来的呢？实际上，Android系统有很多分区，但只有内部存储是我们能够直接操作的，其他分区都有专用用途，下面介绍几个在刷机过程中常见的分区：BootloaderBootloader可以理解为电脑系统中的“引导”这一概念（即EFI分区）既然是“引导”，那么就存在启动项，在Android系统中称之为“模式”，刷机中常用的模式共有三种，如下图： 正常模式即我们正常开机进入的模式，该模式下，Bootloader将从Boot分区启动FastBoot模式FastBoot其实就是安卓系统的Bootloader，也被简称为FB，进入这一模式相当于我们停留在Bootloader里。 这一模式下可对系统分区进行非常底层的操作，通常用来解锁Recovery、刷入Recovery。Recovery模式Recovery一般也简写为REC，翻译过来其实就是恢复模式。这一模式中的系统我们可以自行更改，常用的有TWRP Recovery和CWM Recovery。 这一模式也是我们刷入系统通常用的模式，这一模式比fastboot层级高一些，比较安全。该模式下，Bootloader将从Recovery分区启动System分区顾名思义，这一分区主要放系统相关的程序。Data分区顾名思义，这一分区放置的是App所存储的数据信息，以及各个app的apk文件。Cache分区顾名思义，这一分区主要放缓存Sdcard分区这个就不能顾名思义了，这个分区看起来像是外置sd卡，实际上是安卓的内置存储（也可称之为内置sd卡）Android与PC的交互——ADB介绍完Android系统的启动过程及分区，接下来就需要知道电脑是如何与Android交互的了。通常我们使用的是ADB（Android Debug Bridge, 安卓调试桥），这也是各种手机助手、刷机助手之类软件底层所使用的程序。ADB工具包的获取网上虽然能搜索到很多下载站提供ADB工具包的下载，但都难以确定其是否为最新版。实际上，ADB工具包被整合在了Android SDK的platform tools里，这个platform tools其实就是ADB工具包，因此直接到Google的安卓官网进行下载：官网地址： https://developer.android.com/studio/releases/platform-tools最新版下载链接： https://dl.google.com/android/repository/platform-tools-latest-windows.zip安装直接将其解压，并解压得到的路径加入环境变量PATH中。adb命令输入adb help即可查看帮助，也可验证是否安装成功。常用的命令如下：adb devices #查看已连接的设备及其所处模式 adb push <本地文件> <设备路径> #将电脑中文件push进设备中 adb pull <设备文件> <本地路径> #将设备中文件pull到电脑里 adb install <apk文件路径> #安装app adb shell #进入设备Linux终端 adb reboot fastboot #重启至fastboot模式，不一定成功 adb reboot recovery #重启至recovery模式，不一定成功fastboot命令打开命令行，输入fastboot help即可查看帮助（注：连接设备，将设备重启至fastboot模式，才可使用fastboot操作设备）常用的fastboot命令如下：fastboot device #查看当前连接的设备 fastboot oem get-bootinfo #获取Bootloader解锁状态 fastboot oem unlock <16位解锁码> #解锁Bootloader，以便刷入Recovery fastboot flash <分区名> <刷入img文件路径> #给指定分区刷入镜…