1.Android系统分区的介绍:
(1)hboot:开机引导区域。类似于电脑的BIOS,这块区域没有刷正确,手机就变成了砖,但是一般Linux系统下刷机不会变成砖;
(2)rdio:通讯模块。基带、wifi、bluetooth等斜街硬件的驱动软件
(3)recovery:系统出现故障时负责恢复
(4)boot:Linux嵌入式系统内核
(5)system:系统文件、应用
(6)cache:系统运行时产生的缓存
(7)userdate:用户使用App时产生的缓存数据
2.刷机的分类:
我目前的理解是刷机就是重新给手机安装系统,目前了解到的刷机方式有【卡刷】和【线刷】。
(1)卡刷(较简单的刷机方式):
系统在进行定制的时候,会编译出来一份zip压缩包,里面没有代码,而是上面提到的一些系统分区的镜像,方便用户进行 手动升级 和 恢复系统 用的。这个zip压缩包是内置在sdcard上的,并且需要在recovery模式下进行。进入recovery模式是通过按住关机键和音量下键进入recovery状态下,然后再进入BootLder界面。Note:有些手机可能没有预装recovery。
(2)线刷(较难、较底层的刷机方式):
相较于recovery状态下的卡刷,线刷是用过fastboot工具进行刷机,是一种更底层的刷机方式。fastboot刷机方式是要有一根数据线链接电脑和手机。通过fastboot命令来控制刷机过程,这种刷机更安全。
3.adb工具
adb是Android系统一个工具,全称是“Android Debug Bridge”,即安卓调试桥。
下面这中介绍安装的adb版本不是最新的,在正常用的过程中可能会出现问题,所以我找了下面的这个链接:
此链接安装的adb版本是1.0.40的
(1) adb的作用:
Android手机在刷机(线刷)的时候,必须有一个adb工具。在刷机的时候,我们用数据线连接电脑和手机。使用adb命令来使手机进入重启、进入Recovery、进入fastboot、文件推送状态下。
(2)在Ubuntu18.04上安装adb:
(a)更新apt,如果不更新,可能会存在安装不成功的可能:
sudo apt update
(b)通过apt-get命令安装:
sudo apt-get install android-tools-adb
(c)查看adb的版本
adb version
3.可能会用到的adb命令:
(1)显示当前设备:
adb devices
(2)复制文件到手机:
adb push [电脑中要推送的文件的位置] [需要把文件推送到手机的那个位置]
例如:
adb pull C:\muzi.zip /sdcard
(3)复制手机中的文件到电脑:
adb pull [手机中文件的位置][要复制到电脑的那个位置]
adb pull sdcard/muzisoft.zip c:\
(4)重启设备
adb reboot
(5)重启设备到recovery模式
adb reboot recovery
(6)重启设备到bootloader模式
adb reboot bootloader
下面的两个命令暂时不是很理解
(7)安装.apk类文件(需要保证.apk文件的位置和adb文件在同一个目录下面)
adb install A.apk
假设安装的是A文件,类型是apk类型的。
(8)安装apk类文件到sd卡:(保证apk文件和adb在同一个目录下)
adb install -s A.apk
4.fastboot工具:
通过上面的介绍可以知道,fastboot是Android手机在进行线刷的时候的必备工具,所以我们要在Ubuntu18.04上安装fastboot工具。
(1)Ubuntu 18.04上安装fastboot工具:
sudo apt-get install android-tools-fastboot
(2)权限问题的解决:
过以上的命令,我们可以找一个测试机试试能否在Ubuntu终端命令上发现进入fastboot状态下的手机。操作步骤如下:
找一个测试机进入fastboot状态下,然后用数据线与电脑链接;
在Ubuntu上的终端命令下输入:fastboot devices
得到的结果是:
no permission (user mi is not in the plugdev group); see [http://developer.android.com/tools/device.html]
这个mi是我的用户名
那么此时的一个解决方案就是(彻底解决问题):
参考链接:参考博主
下面是我的总结:
(a)切换目录:
cd /etc/udev/rules.d/
(b)通过sudo命令去编辑配置文件:
sudo vim 51-android.rules
进入编辑状态之后要按键盘【i】才能进行编辑
©将以下的配置信息复制进去:
# udev rule to detect android devices
# These rules refer to http://developer.android.com/tools/device.html
# Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666", GROUP="plugdev"
# Archos
SUBSYSTEM=="usb", ATTR{idVendor}=="0e79", MODE="0666", GROUP="plugdev"
# Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666", GROUP="plugdev"
# Azpen Onda
SUBSYSTEM=="usb", ATTR{idVendor}=="1f3a", MODE="0666", GROUP="plugdev"
# BQ
SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"
# Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666", GROUP="plugdev"
# Fairphone
SUBSYSTEM=="usb", ATTR{idVendor}=="2ae5", MODE="0666", GROUP="plugdev"
# Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666", GROUP="plugdev"
# Fujitsu Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0666", GROUP="plugdev"
# Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091e", MODE="0666", GROUP="plugdev"
# Genesys
SUBSYSTEM=="usb", ATTR{idVendor}=="d324", MODE="0666", GROUP="plugdev"
# Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
# Haier
SUBSYSTEM=="usb", ATTR{idVendor}=="201e", MODE="0666", GROUP="plugdev"
# Hisense
SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0666", GROUP="plugdev"
# HTC, Wiko
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
# Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
# Intel
SUBSYSTEM=="usb", ATTR{idVendor}=="8087", MODE="0666", GROUP="plugdev"
# K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666", GROUP="plugdev"
# KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666", GROUP="plugdev"
# Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666", GROUP="plugdev"
# Lab126
SUBSYSTEM=="usb", ATTR{idVendor}=="1949", MODE="0666", GROUP="plugdev"
# Lenovo
SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev"
# LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"
# Mad Catz
SUBSYSTEM=="usb", ATTR{idVendor}=="0738", MODE="0666", GROUP="plugdev"
# Meizu
SUBSYSTEM=="usb", ATTR{idVendor}=="2a45", MODE="0666", GROUP="plugdev"
# Micromax
SUBSYSTEM=="usb", ATTR{idVendor}=="1ebf", MODE="0666", GROUP="plugdev"
# Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
# MTK
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev"
# NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666", GROUP="plugdev"
# Nokia
SUBSYSTEM=="usb", ATTR{idVendor}=="0421", MODE="0666", GROUP="plugdev"
# Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666", GROUP="plugdev"
# Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666", GROUP="plugdev"
# OnePlus Two (unknown vendor's name)
SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev"
# Oppo
SUBSYSTEM=="usb", ATTR{idVendor}=="22d9", MODE="0666", GROUP="plugdev"
# OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666", GROUP="plugdev"
# Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10a9", MODE="0666", GROUP="plugdev"
# Pegatron
SUBSYSTEM=="usb", ATTR{idVendor}=="1d4d", MODE="0666", GROUP="plugdev"
# Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666", GROUP="plugdev"
# PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666", GROUP="plugdev"
# Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
# Rockcwell Electronics
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"
# SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666", GROUP="plugdev"
# Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
# Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666", GROUP="plugdev"
# Sony
SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev"
# Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
# Spreadtrum
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev"
# T & A Mobile Phones
SUBSYSTEM=="usb", ATTR{idVendor}=="1bbb", MODE="0666", GROUP="plugdev"
# Teleepoch
SUBSYSTEM=="usb", ATTR{idVendor}=="2340", MODE="0666", GROUP="plugdev"
# Texas Instruments UsbBoot
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", MODE="0666", GROUP="plugdev"
# Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666", GROUP="plugdev"
# Wearners
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
# Wileyfox
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", MODE="0666", GROUP="plugdev"
# XiaoMi
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", MODE="0666", GROUP="plugdev"
# YU
SUBSYSTEM=="usb", ATTR{idVendor}=="1ebf", MODE="0666", GROUP="plugdev"
# Zebra
SUBSYSTEM=="usb", ATTR{idVendor}=="05e0", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", MODE="0666", GROUP="plugdev"
# ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
# ZUK
SUBSYSTEM=="usb", ATTR{idVendor}=="2b4c", MODE="0666", GROUP="plugdev"
(d)保存退出文件:
首先按左上角的【esc】键盘
然后,输入【:wq!】
(e)分别去执行以下命令就能退出:
sudo chmod a+r 51-android.rules #将此目录下面的所有rules文件加上权限
sudo service udev restart
adb kill-server
adb devices
再去执行fastboot devices就能看见链接数据线的手机设备的型号了