刷机很平常,可你知道吗

极客

刷机包是怎么炼成的

刷机,类似于给电脑重装系统,买了翻版智能手机或者升级过系统的朋友应该对它不陌生。不知道大家有没有这样的疑问,为什么没有通用的刷机包?刷机包是怎么制作出来的呢?看完本文你就明白了。

一个刷机包制作者的心语

提要:每一个刷机包的诞生,背后都耗费了制作者大量的心血。

05-f11-1.jpg

罗威,28岁,安卓Teamleader组长系列刷机包的作者,高级程序员,编程经验超过10年,目前在郑州从事Android系统的编译和开发。他编写的Android刷机包广受好评,其中韩版的三星和LG的Android手机的刷机包都是由他编写的。他也是刷机包开发领域中屈指可数的具有影响力和权威性的专家。在2011年11月,他创办了“酷达网”,进行个人创业。

网名:Android_组长 微博:http://weibo.com/teamleader0117

博客:http://blog.sina.com.cn/teamleader0117

作为一个ROMer(刷机包制作者),心态非常重要。

首先,你得有不怕苦不怕累的决心;其次,你还得有接受失败和挑战困难的勇气;最后,你必须得有从容不迫面对各种非议与争论的淡定。归根到底,你的热爱,是作为一个ROMer最基本的保证。

还记得曾经有一位前辈大哥说过:在研究的过程中,发现问题,解决问题,再发现问题,这本身就是最大的享受。

刚研究Android手机那时候,基本上每天都能熬夜到两三点。虽然之前有一定的知识积淀,但是面对Android这一全新的系统,不懂和迷惑的东西,还是很多。而且,那时不比如今,作为一个新系统,接触的人少,能够交流问询的人更少,很多东西都得完全靠自己去搜索,而英文技术资料又一定程度加大了理解学习的难度。

有一次做一款三星Android手机,当获取了Root权限并完成了系统的更改和调试,最终需要打包ROM的时候,却发现三星的刷机方式完全不同于其他机型。这可真是令人着急,因为之前已经在酷达论坛上公布了ROM制作进展,并承诺了发布日期,但是如果因为这个问题无法解决而导致发布日期后推的话,势必会给论坛造成不良的影响。

因此,我一边问询几个相熟的朋友,一边自己排查问题和查找资料,在查询了部分国外大神写的相似技术资料以及自己的跟踪分析后,经过了一天一夜的时间终于解决了ROM的打包问题。

另外一个现实的问题是,一个ROMer花了大量时间和精力做出来的东西,基本上是很难有所回报的。虽然我们现在也启用了捐款的模式,但是实际上真正能够捐助的,实在是少之又少,付出与回报,完全不成正比。而且,很可能你很用心做出来的东西,挑剔的机油们并不一定买你的账。

对于大部分只将ROMer作为第二职业的人,很可能会遇到研究ROM和自己的现实工作生活相冲突的情形,而上述的种种,都是一个ROMer所必须面对的问题。

最后我想说的是,爱安卓,爱分享,爱刷机,爱第三方ROM。

05-f11-2.jpg

刷机包专一是必需的

提要:为了高效,一种刷机包仅提供一套驱动程序,仅针对一款机型设计。

可能很多人都有疑问,同一版本的Android系统,譬如Android2.2或者Android2.3,为什么会衍生出各种不同机型的刷机包,而不能做到统一而通用?如果Android刷机包能够做得像电脑Windows操作系统那样,适用于任何手机,刷机所需要的,仅是从谷歌官方下载新版刷机包,然后按照教程更新完系统,最后装好自己喜欢的应用程序就大功告成的话,想必是一件非常美妙的事情。

然而,稍加分析就会发现,这种看起来“美妙”的事情,要实现起来,却是那么的遥不可及。Windows系统的普适性是由于它本身就包含了大量的驱动库且硬件架构统一,而在移动设备上,由于各种条件的限制(例如架构较多),操作系统要求尽可能的高效和精简,绝不能像Windows那样体积臃肿,所以原则上来说一种刷机包仅提供一套驱动程序,仅供一款机型正常使用(考虑了架构问题)。此外,厂商对于二次开发后的源代码以及驱动是没有开源的。

因此,虽然很多不同的手机都在用着貌似相同的Android 2.1、Android2.2、Android2.3等版本,但是所谓的貌似相同其实只是相似,而绝不是相同。它们除了极少一部分仅外壳不同的机型能够通用刷机包之外,绝大部分的刷机包还是仅支持一款机型。

刷机包的制作流程

提要:通过反编译手段修改Android系统是制作刷机包的核心。

对于不同的厂商不同型号的手机来说,刷机方式可谓八仙过海。虽然每个厂商的官方刷机包格式都不尽相同,但是对于广大对第三方ROM情有独钟的机友来说,Recovery模式下的刷机方式,绝对不会陌生。而对于很多刷机包制作者来说,适用于Recovery模式下的刷机包,便是其最常制作的,下面我来谈谈这种刷机包的制作方法。

一般情况下,我会根据需要通过反编译手段对原版系统做出更改(具体操作请看第2期F11《Android就是妹纸》),并在目标手机上完成系统的调试。当我们修改、美化完成之后,通过ADB导出system目录至电脑,然后通过工具“Android Kichen”便能很方便地生成一个名为update.zip的刷机包。

此种刷机包,其格式为非压缩ZIP,其中META-INF文件夹包含了刷机包的验证签名和刷机控制脚本(META-INF\com\google\an

droid\updater-script),而system文件夹即是需要刷入的那个系统,至于boot.img文件是否存在视情况而定,当需要更新引导区时,一般都会含有此文件。除此之外,当遇到fastboot可用的机型,也可以生成.img镜像文件来作为ROM。

瘦身系统 方讨用户喜欢

提要:大多数刷机包都对系统进行了优化处理。

目前,制作刷机包,大致可以分为两种类型:精简型和完整型。一般情况下,我都是要对Android系统进行优化的,也就是所谓的精简型。

由于Android的每一个功能的实现都是由system/app下的APK来完成的,而system/app目录下,必要和非必要的APK没有任何标记做区分,所以要精简Android系统,就必须要知道哪些APK可以精简,以及精简后对系统的影响,这就需要经验啦!

以我为例,一般情况下,我会保留Android系统中的Google服务组件,因为我一直认为,Android的精华所在便是Google的一系列服务,虽然在国内不能完整地享用(很多功能不幸被和谐了),但是就能用的那一部分而言,都绝对能成为让你保留它的原因。

通常被我精简删掉的系统APK都是某些不常用的桌面小组件,以及一些更新速度快或者不怎么常用的应用级APP。此外,我在制作欧版手机的刷机包时,会考虑语言问题,会加入语言包,让刷机包中文化。