本内容来源于@什么值得买smzdm.com|作者:青雪唐元

创作立场声明:本文由于自身的局限性,可能有些内容不够准确,还望大家多多指正,期待深入探讨。

2018年我第一次接触刷机,初出茅庐的我为我的小米平板1刷上了系统lineageos15.1,并写下了使用mac为小米平板刷lineageos。彼时自己对于刷机这个过程颇为生疏,只是小心翼翼的按照教程一步一步操作,生怕有一丝一毫不一致的地方,而其背后每一步骤的原因却无从得知,故有意撰此文。一方面让准备刷机的人多一个教程可以参考,另一方面藉此机会充实自己,了解一些android开发知识,也算是满足自己的好奇心罢。

acer重装系统引导(acer电脑重装系统快速指南)

出于知识内容所限,本文仅讨论线刷模式,不讨论卡刷模式。

配置androidsdk的环境变量

sdk的全称叫做软件开发工具包(softwaredevelopmentkit),androidsdk里面包含安卓软件的开发工具,这些开发工具均在sdk的安装目录下,拥有它们我们才能对android中的软件进行安装、卸载等相关操作。当我们在终端输入指令要求启动某个工具或应用程序时,系统会优先在当下的目录中进行查找,如果没有则会在系统path指定的路径下进行查找;而我们配置环境变量的这个过程,就是把sdk的安装目录记录在系统path的指定路径中,让我们在终端能够直接使用sdk中的开发工具。该过程也叫做配置adb(androiddebugbridge)环境变量。

mac系统下的环境变量配置

参见:使用mac为android手机刷原生系统

windows系统下的环境变量配置

windows系统下由于其系统特点,目前(我知道的)有三种方案,将在以下展开,三种方法均适用于windows10系统,其他系统可能有些出入,读者可部分参考。

方案一:配置环境变量

参见:win10如何配置android开发环境变量

该方案和mac系统下环境变量配置的原理一致,都是对系统进行操作。虽看起来步骤多,好处就在于一劳永逸,一次配置「终身」受用,除非你重装了系统,个人优先推荐该方法。

方案二:快速安装与使用adb

1将platform-tools数据包解压,进入解压后的文件夹,按住shift键的同时在空白处单击鼠标右键,选择「在此处打开命令窗口」(在win10创意者更新中被改为「在此处打开powershell窗口」);2输入adbversion检测环境变量配置是否完成;这个方案相当偷懒,其实这个步骤并没有实现系统的环境变量配置,只是提供了一个临时的环境,但是无论如何这个方法是最方便的,而且对于新手而言非常友好。

方案三:直接访问sdk目录

1将platform-tools放在一个接近硬盘根目录如c:adb这样的地方便于访问,这时我们需要访问的目录为c:adbplatform-tools;2在运行命令窗口中输入cmd打开命令符窗口,并按下回车执行;3输入cdadbplatform-tools,并按下回车执行,进入目录;4输入adbversion检测环境变量配置是否完成。该方案和方案一比较像,都是偏向于临时解决环境配置问题,但是都没有实现系统的环境变量配置,因此每次使用时都要重新访问一次sdk的所在目录。

该方案看似简单、容易操作,但弊端明显,只有你在进入该目录的情况下,才符合「环境变量已配置」的条件,不建议没有代码基础的人操作。

解锁bootloader

一般而言,每个android设备都会有fastboot/bootloader模式,它是负责引导操作系统内核启动的引导程序,只有在该模式是无锁的情况下,我们才能自由的root我们的设备、自定义或安装一个更加好用的第三方rom固件,否则很容易损伤设备。与封闭的ios系统不同,android系统是开源的,因而相应的各大厂商所开发的fastboot/bootloader模式也各有不同。尽管系统是开源的,但是各厂商为了对自己的设备有着更多的支配权,多数情况下都会对其fastboot/bootloader模式上锁。这就是为什么我们在刷机教程里经常看到「bootloader解锁」这一步了。

bootloader解锁通用步骤
  • 打开「开发者选项」,不同设备打开的方式不同,请读者根据自己设备机型自行百度一下;
  • 先后打开「usb调试」与「启用oem解锁」(没有「启用oem解锁」选项的设备则不用理会),该过程需要满足网络流(ke)畅(xue);
  • 进入bootloader界面等候;
  • 打开terminal/cmd,输入bootloader解锁指令,并按下回车执行;如果你的设备为android5.0及以下,则解锁指令为fastbootoemunlock;如果你的设备为android6.0及以上,则解锁指令为fastbootflashingunlock;
  • 在设备端此时会弹出bootloader解锁的确认界面,使用音量键移动关标选择确认,按下电源键开始解锁;
  • 解锁后设备会被清除数据并重新启动,待设备开机后检查「usb调试」选项;
  • 重新进入bootloader界面等候;
  • 注意事项
  • 解锁fastboot/bootloader模式后,可能会使保修相关服务失效;
  • 解锁bootloader的过程中,可能会还原设备一切资料,切记在此前做好资料备份工作;
  • 解锁bootloader的过程中,有一定损坏设备的风险;
  • 该bootloader解锁方式大体上对于android设备通用,但是鉴于各厂商android设备差异实在太大,建议如果有官方解锁通道就先去申请官方解锁,没有解锁通道再尝试该方法。当然对于从来没有放开bootloader解锁权限的品牌(可自行百度),还是该放弃放弃吧。
  • 刷入第三方recovery

    acer重装系统引导(acer电脑重装系统快速指南)

    设备一般都会自带一个官方初始的一个recovery,其作用主要用于恢复出厂设置与ota安装/升级,但是由于官方recovery不能识别第三方rom,而第三方recovery却可以,所以我们一般在刷机之前都会先刷入第三方recovery。目前比较推荐的第三方recovery是twrp,该项目是一个社区开源项目,挂载在github上。也许你会发现之前也有人推荐过cwm,很遗憾的是,该项目已于2014年停止了维护,如果你用的设备型号比较老的话,可能会用到它。

    刷入第三方recovery的通用步骤
  • 准备好设备匹配的第三方recovery版本,后缀为.img;
  • 重启手机至bootloader模式,电脑端运行terminal/cmd;
  • 输入cd你的第三方recovery文件路径,并按下回车执行,以此来定向第三方recovery的文件位置,接着输入fastbootbootxxx.img(xxx为具体的文件名),并按下回车执行,此时recovery已经刷入,手机会重启至recovery相应界面。
  • 注意事项

    该过程中需要定向recovery的位置,故而如果你在windows系统下的环境变量配置时用的是方案三,在这里会比较麻烦,解决方法是把你的第三方recovery文件放在platform-tools目录下,让两个目录一致。

    类原生android系统rom推荐 lineageos

    lineageos是android的最大售后市场分销,以前称为cyanogenmod。2016年开源项目cyanogenmod被宣布停止,被复刻为lineageos,由原团队cyanogenmod继续开发,源代码于github可用。

    resurrectionremixos

    resurrectionremixos基于lineageos15.1,包含大量附加功能和定制选项。因为它提供了许多功能,所以成为了android设备最受欢迎的自定义rom,源代码于github可用.

    crdroid

    crdroid基于lineageos,在此基础上附加其他性能调整和额外功能,源代码于github可用。

    crdroid

    pixelexperience

    pixelexperience基于android开源项目(aosp)与codeaurora项目(caf)开发,由于pixelexperience中包含谷歌全家桶,故而相比与其他rom包来说要大些,源代码于github中可用。

    paranoidandroid

    paranoidandroid的制作团队就是oxygenos的制作团队,该制作团队的核心成员被oneplus聘请,为oneplus做rom开发,源代码于github中可用。

    aospextendedrom

    aospextendedrom基于android开源项目(aosp)开发,它提供了各种自定义特性和底层主题引擎,源代码于github中可用。

    resurrectionremixos

    xosp

    xosp是基于cyanogenmod13的rom,混合了很多xperia的特性,带来不一样的感受。因为是xperia aosp的混合体,因此命名为xosp。

    魔趣rom

    魔趣rom基于android开源项目(aosp)开发,slogan是「可能是中国最好的安卓开源系统」,源代码于github可用。

    总结

    这些是我这些天各种查资料总结到的,由于个人能力与知识水平所限,会存在一些不足之处。如前辈们发现文中有错漏的问题,诚求各位不吝赐教。

    附录 常用adb命令 常用fastboot命令