CyanogenMod 7.0—姜饼屋
为了运行最新版本的 Android,用户通常必须使用“旗舰”谷歌手机。不幸的是,这通常需要使用不同的手机运营商,并且大大限制了购买选择。事实上,它将选择限制在少数特定设备上,如 Nexus One 和 Nexus S。由于 Nexus 设备没有滑盖键盘,并且在 T-Mobile 网络上,它们对我来说不是一个可行的选择。
引入 CyanogenMod。
对于习惯于 root 手机的用户来说,CyanogenMod 提供了比支持手机的库存 ROM 多得多的功能。我有一部来自 Verizon 的初代 Motorola Droid,如果我坚持使用库存 ROM,我将被困在 Android 2.2。当前版本的 CyanogenMod,版本 7,包括 Android 2.3 操作系统。代号为“姜饼”,Android 2.3 包括谷歌的所有最新功能,这些功能通常只能在 Nexus S 上使用。感谢 CyanogenMod 团队,我们现在可以拥有这些功能了——例如:
具有更好响应性和更简洁布局的全新屏幕键盘。
更易于选择的复制和粘贴工具。
一个全新的应用商店应用程序,带有一个基于 Web 的配套程序,用于从桌面浏览器安装应用程序。
集成的 VoIP 通话。
虽然新的 2.3 功能很棒,但 CyanogenMod 真正的魅力在于其自定义选项。通过添加替换启动器,可以将一些相同的功能添加到手机的库存 ROM 中,但 CyanogenMod 默认情况下包含了大部分功能。一些更令人兴奋的功能包括:
更改锁屏布局的能力。
默认安装的高度可自定义的 ADWLauncher。
改进的下拉状态栏,带有电源选项。
视觉改进,例如关机时屏幕快速关闭、可自定义的虚拟桌面、可调整大小的小部件等等。
CyanogenMod 非常可自定义,以至于展示起来常常令人沮丧,因为它在不同的安装之间看起来可能截然不同。要回答“CyanogenMod 7 看起来像什么?”这个问题,最好的答案真的是,“你想让它看起来像什么样就什么样!”
如果您想在手机上拥有最新版本的 Android,但又不想等待手机运营商发布更新,或者如果您有较旧的手机(例如我的初代 Droid),它可能永远不会看到超出 Android 2.2 的更新,那么 CyanogenMod 就是适合您的工具。大多数手机在 root 后都受到支持,即使是较旧的手机在 Android 2.3 下也能良好运行,特别是如果您对其进行超频。有关更多详细信息或下载最新版本的 CyanogenMod,请访问 www.cyanogenmod.com。但是,在已 root 的手机上安装它的最简单方法是使用 ROM Manager。它可以从应用商店轻松下载,免费版本包括对稳定版 CyanogenMod 的支持。
已经 Root 了吗?
安装像 CyanogenMod 这样的自定义 ROM 的第一步是“root”您的手机。Rooting 不会改变您手机的行为方式;相反,它为您提供对系统的超级用户(类似 sudo)访问权限。一旦您的手机被 root,您就可以执行诸如安装自定义 ROM、超频您的 CPU、设置无线网络共享(这可能违反您的手机合同)甚至执行简单的操作,例如拍摄屏幕截图,这些操作本不应该需要 root 权限。
Rooting Android 手机通常非常简单。通常,只需要在 Google 上简单搜索您拥有的 Android 手机型号以及“root”一词即可。有关如何 root 几种不同型号手机的说明,像 www.droid-life.com 这样的网站也很有帮助。
请记住,“rooting”您的手机本身不会改变太多。它只是让您有能力改变事物。然而,能力越大,责任越大,所以请小心使用您已 root 的手机。就像桌面版 Linux 一样,root 权限的力量可能会给您带来麻烦!
在探索 CyanogenMod 版本 7 时,我对 Android 世界的发展速度感到非常兴奋。我决定联系 CyanogenMod 的创建者 Steve Kondik,并向他提出了一些问题。(感谢我的程序员朋友 Russ Ryba 帮助我想出了一些更以编程为中心的问题。)
SP: CyanogenMod 是最受欢迎的自定义 ROM 之一,即使不是最受欢迎的。是什么促使您启动这个项目?
SK: 我一直尝试自定义桌面 Linux,努力使事情更流畅、更快速。当我了解到 G1 的工作原理,以及我可以更改任何我想要的东西时,我开始重建内核并进行不同的调整。然后我意识到我可以从源代码重建整个系统,并将其刷入手机,一切都完美运行——那时大门打开了。
SP: 安装自定义 ROM 需要 root 手机。Rooting 您的手机是手机公司通常不赞成的事情。您是否收到过来自手机运营商或谷歌的不友好的信件?
SK: 是的,对于固件和专有驱动程序而言,这仍然是一个灰色地带。当 CM 开始变得流行时,谷歌让我非常清楚开源代码和封闭部分(如 Google 应用,例如 Gmail)之间的界限,所以我不得不停止包含这些。CM 现在不附带这些部分,所以我们将其留给用户来决定如何恢复该功能。
运营商和制造商似乎开始意识到这些不仅仅是手机,有些甚至通过开源自己的代码来拥抱社区。T-Mobile 最近开源了其主题引擎,我们在 CM7 中正在使用它。高通和 TI 发布了其参考板的代码。现在我们终于开始看到更多开箱即可解锁的设备。
SP: 您支持大量设备;我很好奇想知道 CyanogenMod 有多少需要专门移植到单个手机,又有多少是通用的。各种各样的设备是否使发布变得困难?
SK: 很多设备都很相似,但总会有细微的差异。通常这与这些设备上的辅助处理器以及卸载媒体编码/解码或特殊硬件(如摄像头和 GPS)有关。在某些情况下,我们不得不对各个部分进行反向工程,但主要的制造商一直在提供我们可以学习或直接使用的开源代码,例如高通的 CodeAurora 项目。
在 CM 中,每个设备都有一个“维护者”,即一个或多个人员负责该特定设备并处理问题。
SP: 一旦手机被 root,安装自定义 ROM 是否简单,或者制造商是否尝试以其他方式阻止您运行自定义代码?
SK: 这取决于设备。有些是完全开放的,有些是“root”了,但仅限于用户空间——启动过程中无法更改任何内容,因此自定义内核等内容无法轻松使用。
SP: 如此多的不同开发者和不同的手机,开发过程是如何运作的?在像您这样的项目上工作有什么独特的挫折感吗?
SK: 防止特定于设备的更改破坏其他设备上的功能是很棘手的部分。这大部分由设备“覆盖层”处理,这些覆盖层自定义硬件的构建。Android 在使其抽象层相对容易方面做得很好,但它也发展迅速。供应商通常在可扩展部分添加其专有代码,而 Android 对向后兼容性没有任何作用。在 CM 中,为了迁移到更新版本的 Android,我们实际上不得不重新添加对某些旧驱动程序的支持。
还有谷歌内部开发方式的问题。它在幕后完成所有开发后发布新版本的源代码,所以当它到我们手中时,需要花费大量时间来弄清楚更改了什么以及如何将我们的自定义功能重新集成到其中。
SP: 如果没有 GPL 要求谷歌发布其源代码,您所做的任何事情都有可能实现吗?
SK: Android 不是 GPL;它是 Apache 许可证。谷歌唯一需要发布的代码是 Linux 内核。但是,是的,如果没有源代码,我们正在做的这类事情是不可能实现的。
SP: 您最喜欢和最不喜欢使用的硬件设备是什么?是什么使它们变得出色或糟糕?
SK: 摩托罗拉设备是最困难的,因为它们包含大量的专有代码,更不用说签名的引导加载程序了。三星手机也一直是一个挑战,因为他们做了很多不同的事情。HTC 设备是我们支持最好的设备,部分原因是它们都类似于谷歌直接开发的设备(G1、Nexus One)。HTC Evo 一直是我个人最喜欢使用的设备,因为硬件是独特的,并且它是第一个包含其他设备没有的东西,如双摄像头和 HDMI 视频。
SP: 人们需要多少以及什么样的经验才能开始创建自己的自定义 ROM?
SK: 如果您想自己为设备构建 CM,我们提供详细的文档。您只需检出源代码,使用一些简单的命令,您就会得到一个可刷写的 ROM。这就是目标——降低入门门槛。如果您对某个功能有想法,那么很容易深入并开始编码。
SP: 我根本不是程序员,但我喜欢 CyanogenMod,并且我想提供帮助。像我这样的人如何贡献?
SK: 在我们的论坛上提供帮助,在我们的维基上编写文档和教程,并告诉您认识的每个人。
SP: CyanogenMod 与其他自定义 ROM 有什么不同?
SK: 我甚至不能再称之为“自定义 ROM”了;它变得更像一个 Android 发行版。我们有一个完整的提交代码的基础设施和一个出色的支持网络。我希望人们尽可能容易地参与进来并添加自己的想法。CM 真正关乎社区。虽然我们确实有一个核心开发团队,但 CM 中许多最好的部分都来自意想不到的地方,因为有人认为这会是一个很棒的想法,并且我们使在您自己的设备上运行代码变得容易。
SP: 您是否计划随着平板电脑变得越来越普及,将 CyanogenMod 扩展到平板电脑?
SK: 我们已经支持一些平板电脑,如 Nook 和 Viewsonic G-Tablet。随着更多平板电脑的上市和 Android 3.0 的发布,您可以确信我们将努力使它们变得更好。
有关 CyanogenMod 的更多详细信息以及您如何贡献,请访问 www.cyanogenmod.com。
Shawn Powers 是 Linux Journal 的副编辑。他还是 LinuxJournal.com 的 Gadget Guy,并且收藏了一系列有趣的复古加菲猫咖啡杯。不要让他的傻发型迷惑您,他是一个非常普通的人,可以通过电子邮件 shawn@linuxjournal.com 与他联系。或者,访问 Freenode.net 上的 #linuxjournal IRC 频道。