Android 无处不在!

作者:Bill Childers

似乎现在你无论浏览哪个科技新闻网站或阅读哪本杂志,都无法避开关于 Android 的提及。如果你一直没有关注新闻,Android 是一个基于 Linux 的操作系统,由 Google 设计,旨在轻量级设备(如手机和网络平板电脑)上运行。Android 的一个关键特性是开发者可以使用 Java 为该操作系统编写代码,这使得它成为一个非常容易上手的开发平台。

第一款 Android 驱动的产品是 T-Mobile G1,由 HTC 制造,也被称为 Dream。Dream 拥有 528MHz ARM11 CPU、192MB 的 RAM 和 256MB 的闪存,因此它是一款功能强大的智能手机,并且是开放手机联盟和 Google 开放标准努力的一部分。由于 Google 的参与,它被媒体誉为“Google 手机”。

在本文中,我着手看看我可以在多少设备上安装 Android,以及让每个设备运行起来有多困难。因为我们听到了关于 Android 驱动的网络平板电脑、手机甚至上网本的传闻,我想了解炒作的真相。我选择跳过表面的光鲜,深入操作系统本身,看看在设备上运行它到底需要什么。

在 G1 上探索 Android

HTC Dream/T-Mobile G1 手机(图 1)有一个开发者版本,允许运行未签名的二进制文件,并且它做了一些普通 G1 不会做的事情。因为我有一个普通的 G1,我认为开始我的 Android 探索的一个好地方是看看我是否可以在发布设备上运行开发者操作系统。毫不意外,T-Mobile 不赞成任何人这样做,并在设备中设置了障碍来阻止它发生。同样令人惊讶的是,结果证明这非常容易,因为固件中存在漏洞,允许你获得手机的 root 访问权限。

Android Everywhere!

图 1. HTC Dream/T-Mobile G1 智能手机

一旦你获得 root 权限,你几乎可以对设备做任何你想做的事情,包括刷入开发者版本的操作系统。本文“资源”部分中的“破解你的 G1/Dream”链接包含了详细信息,但基本上步骤主要是标准的 Linux 命令行操作,利用了固件中的一个错误,即你在键盘上输入的任何内容都会发送到操作系统。(尝试输入重启在任何时候的旧款 G1 上。它会自发重启!)

你很可能需要将你的固件降级到一个具有已知漏洞的版本,然后利用该漏洞获得 root 权限,但一旦完成,你可以使用标准更新方法将设备重新刷入你选择的任何固件。如果你选择这样做,标准的免责声明和弃权声明适用于硬件损坏(参见“免责声明和弃权声明”侧边栏),因为你肯定在做一些有可能将你几百美元的智能手机变成一块昂贵的砖头的事情。但是,如果你决定这样做,我推荐 JF 出色的 1.51 ADP 版本,因为它保留了 root 功能并允许你运行未签名的二进制文件(参见“资源”部分中 JF 博客的链接)。

一旦最新版本的操作系统(代号 Cupcake)安装在现在已 root 的手机上,如果你是程序员,你可以为其构建自己的二进制文件,或者从互联网上获取其他人完成的东西。当然,如果你 确实 下载了别人的二进制文件,标准的免责声明也适用于那里。你能想象,如果你在始终连接的移动设备上安装了 rootkit 或木马,可能会产生多少数据费用吗?这正是 T-Mobile 不希望设备被破解的原因,因为它可能会拥塞其网络。

大胆地前往无人涉足之地...

由于控制 G1 相对容易,我开始想知道在其他设备上安装 Android 是否可行。快速扫描我的桌子,我发现一部未使用的 AT&T Fuze 手机,也称为 HTC Touch Pro(代号 Raphael100)。HTC Touch 运行 Windows Mobile,而不是 Android,但这两款手机都是由 HTC 制造的,并且似乎具有相似的硬件。我开始怀疑是否有可能在该手机上运行 Android,因为它们是同一家制造商。

我开始研究在 Touch Pro 上运行 Android 的可行性,我发现一群有进取心的开发者已经完成了这件事。对我来说幸运的是,他们也提供了他们的发行版(参见“资源”),因此在 HTC Touch Pro 上运行 Android 几乎与在 G1 上运行一样容易(图 2)。

Android Everywhere!

图 2. Android 在 WinMo 手机上启动

事实证明,在 Touch Pro 上运行 Android 与下载发行版的 .zip 文件并将该文件的内容解压缩到 MicroSD 卡一样容易。完成之后,我将卡插入手机,并使用 Windows Mobile 文件管理器导航到卡上名为 tmp 的目录。在该目录中有一个名为 haret.exe 的程序。我运行了它,手机屏幕变黑,然后它向我展示了熟悉的 Linux 内核消息,因为它开始启动 Android(图 3)。

Android Everywhere!

图 3. Windows Mobile 上的内核消息?

就像 loadlin 时代,DOS 程序可以引导 Linux 内核启动一样,haret.exe 从 Windows Mobile 环境引导 Android。不久之后,我看到了 Android 桌面环境。然而,这个 Android 移植版并非一切正常。虽然我可以启动一些应用程序,如联系人管理器和浏览器,但手机内部的 3G 调制解调器无法运行,麦克风或扬声器也无法运行。我唯一能做的就是发送和接收 SMS 消息,尽管它确实像 G1 一样执行此操作。是的,就像 Linux 的早期一样,似乎各种硬件的设备驱动程序不存在或无法正常工作。然而,这是一个快速发展的目标,Android 开发者正在努力在该领域取得进展。

Netbook 上的 Android—它可用吗?

由于我在 Windows Mobile 设备上使用 Android 取得了相对成功,我继续看看在我的上网本 Acer Aspire One 上运行它需要什么。我发现有一个正在进行的项目,将 Android 移植到 x86 平台,所以我开始研究。这似乎很简单,即使它需要我自己定制构建发行版。

x86 移植项目允许你构建 VirtualBox 虚拟机或 ASUS Eee PC 的安装程序作为目标。我找到了主要的 Android 代码仓库,其中有关于如何设置你的构建环境并安装所有各种库的优秀说明(参见“资源”)。如果你运行的是 Ubuntu,所需要的只是一个简单的 apt-get 语句,所有构建依赖项和库都会立即安装。但是,一旦你完成此操作,你不应该从主要的 Android 仓库获取源代码。

虽然你可以从主仓库获取它并自己打补丁,但在 x86 移植站点上通过 SVN 提供了一个预先打过补丁的源代码树(参见“资源”)。我花了很多时间尝试为在 x86 上运行 Android 而修补主源代码,但结果在三个小时长的构建周期的末尾附近失败,或者更糟糕的是,在报告干净构建后无法启动操作系统映像。

预先打过补丁的代码在第一次尝试时就构建正确,并且我能够轻松地启动 VirtualBox 虚拟机(图 4)。我确实发现一件事是,除非虚拟机配置为具有串行端口,否则 VirtualBox 虚拟机无法启动。

Android Everywhere!

图 4. Android 在虚拟机中启动!

一旦我的 Android 虚拟机启动并运行,我就开始玩它。与 HTC Touch Pro 移植版不同,此移植版具有完整的网络功能。我做的第一件事是启动浏览器(图 5),这真是令人惊讶!它可能是我见过的最快的浏览器。诚然,它是为 500MHz ARM 优化的,而我是在 2GHz 双核 CPU 上运行它,但它速度极快。然而,它仍然是一个移动浏览器,因此它绝不是功能齐全的。

Android Everywhere!

图 5. Linux Journal—Android 风格

然而,除了移动风格的网页浏览和玩终端应用程序之外,在虚拟机上使用 Android 并没有太大的乐趣。这些应用程序不够吸引人,无法在那里运行。由于我已在虚拟机上构建了它,我尝试将其移植到我的 Aspire One 上,以查看是否有任何性能差异,但存在足够多的硬件不兼容性,以至于我达到了收益递减的地步。我认为我已经从虚拟机中学到了足够的东西,再进行一轮广泛的故障排除是不值得的。

结论

我对 Android 的探索是一次有趣且具有教育意义的练习,即使有时非常令人沮丧。Android 证明 Linux 在移动设备领域已经取得了长足的进步,从夏普 Zaurus 时代到现在,在 T-Mobile G1 上,它流畅、有趣且易于使用。G1 绝对是顶级智能手机的竞争者,当你在与 iPhone 和 BlackBerry 等竞争时,这说明了很多问题。

Android 作为 Windows Mobile 的替代品,具有很大的潜力。其开放式架构意味着它可以利用开源运动来推出新功能,并且它可以让许多当前的 Windows 用户首次体验到 Linux 和开源的魅力。不幸的是,它现在还没有准备好投入黄金时段,但随着开发者弄清楚硬件并获得各种手机的驱动程序支持,这种情况将会改变——就像 Linux 的桌面支持在过去几年中增长一样。这是一个快速发展的目标,很多事情都可能很快改变。我计划密切关注这个领域,以获取更多关于 Android 在以前的 Windows Mobile 手机上的新闻。

然而,Netbook 上的 Android 让我感到犹豫。在虚拟机上花了一些时间后,我真的看不出这比 Ubuntu Netbook Remix 甚至普通 Ubuntu 更好在哪里。Android 针对小型触摸屏和微小的 CPU 进行了优化。大多数 Netbook 的 CPU 比运行 Android 所需的要多得多,但它们没有触摸屏。Android 旨在与最小化或屏幕键盘一起使用,而 Netbook 具有完整、功能齐全的键盘。在摆弄了一段时间后,Netbook 上 Android 的用例似乎没有那么吸引人。我认为将 Netbook 用作小型、功能齐全的笔记本电脑比将其用作大型移动互联网平板电脑更有价值。但是,不要让我的意见左右你。去自己测试一下!你会学到很多东西,如果你有能力改进移植版,请贡献一些修复程序。开发者可能会感谢你的帮助,你将为一些可能触动很多人的东西做出贡献。

免责声明和弃权声明

我再怎么强调也不为过:在破解移动设备时要格外小心。除了设备变砖并使其无法使用的明显危险之外,还有可能给自己造成巨额手机账单的更大危险。这是一个非常好的方法来测试你的“无限”数据套餐是否真的是无限的。你会以惨痛的教训发现,大多数都不是。采取预防措施,并尝试找到其他人已经完成并报告成功的破解方法。除非你有无限的资金,否则在这个领域开辟道路可能会很快变得昂贵。

x86 细节

我在我的 Netbook 上运行 Android 时遇到了困难,但这并不意味着你也会遇到。特别是,ASUS Eee PC(701、900、901、904 和 1000)已知在 Android 下运行良好。Brock Tice 为 Eee PC 制作了一个即用型 USB 安装程序映像,尽管在他撰写本文时,他的构建中的 Wi-Fi 支持不起作用。如果你有不同型号的 Netbook(如我的 Acer Aspire One),你的体验可能会有所不同。这仍然是非常概念验证的代码。

最新消息

就在新闻发布前,一个 Android 开发者团队发布了一个 Android Live CD。如果你想在你的 Netbook、笔记本电脑甚至虚拟机上试用 Android,现在非常容易了。只需下载映像,将其刻录到 CD,然后从中启动即可——无需编译。去看看——你可能会因此迷上它,以至于想买一部 G1 手机!

你在哪里使用 Android?

我们想知道你在哪些设备上运行 Android。在 Linux Journal 论坛的 Android Everywhere 版块与我们的编辑分享:www.linuxjournal.com/forums/hot-topics,作者和 LJ 虚拟编辑 Bill Childers 将在那里主持。

资源

开放手机联盟:www.openhandsetalliance.com/android_overview.html

JF 博客(Android 开发杰出人物):jf.andblogs.net

破解你的 G1/Dream:forum.xda-developers.com/showthread.php?t=442480

HTC Touch Pro 的 Android:connect-utb.com/index.php?option=com_rokdownloads&view=folder&Itemid=68&id=3:htc-raphael

将 Android 移植到 x86:code.google.com/p/patch-hosting-for-android-x86-support

设置你的机器以构建 Android:source.android.com/download

获取 Android 的已打补丁的 x86 版本svn checkout http://patch-hosting-for-android-x86-support.googlecode.com/svn/trunk/ patch-hosting-for-android-x86-support-read-only

Brock Tice 的 Eee PC Android 构建版:virtuallyshocking.com/2008/12/20/building-android-for-the-asus-eeepc-701

Bill Childers 是硅谷的一位 IT 经理,与他的妻子和两个孩子住在一起。他非常喜欢 Linux,也许应该时不时地多晒晒太阳。在他的业余时间,他为吉尔罗伊大蒜节工作,但他身上没有大蒜味。

加载 Disqus 评论