前言
安卓的发展是现象级的。在极短的时间内,它已成功地成为市场上顶尖的手机平台。明确的说,谷歌的安卓团队使用了开源协议,积极面向市场,设计前沿的接口,这些超凡的组合正在开花结果。不必多说,大量用户的涌现也归功于安卓没有被手机制造商、移动网络运营商、硅谷制造商及应用程序开发人员所忽视。各种标记着“为安卓设计”的产品,“兼容安卓”的应用和“基于安卓”的设备都如雨后春笋般出现。
Android's growth is phenomenal. In a very short time-span, it has successded in becoming one of the top mobile platforms in market. Clearly, the unique combination of open source licensing, aggressive go-to-market, and trendy interface is bearing fruit for Google's Android team. Needless to say, the massive user uptake generated by Android has not gone unnoticed for handset manufacturers, mobile network operators, silicon manufacturers, and app developers. Products, app and devices "for", "compatible with", or "based on" Android seem to be coming out ever so fast.
然而,除了移动设备端的成功之外,安卓也出乎意料地吸引了另一群人的注意——嵌入式开发人员。大量的嵌入式设备几乎没有使用界面,传统上认为,大部分的嵌入式设备是具备用户界面的,对于很多现代机器而言,出去单纯的技术性功能外,开发人员设计面向用户设备时必须要考虑到人机交互因素。因此,设计者们必须在以下情况中做出选择:为用户提供他们已熟悉的体验;或冒险改变用户的习惯,要求用户学习鲜有接触的或全新的操作逻辑。在安卓诞生之前,可供开发人员在此类设备上选择的用户界面十分有限
Beyond its mobile success, however, Android is also attracting the attention of yet another, unintended crowd: embedded systems developers. While a large number of embedded devices have little to no human interface, a substantial number of devices which would traditionally be considered "embedded" do have user interface. For a goodly number of modern machines, in addition to pure rechnical functionality, developers creating user-facing devices must also contend with human-computer interaction factors. Therefore, designers must either present users with an experence they are already familiar with or risk alienationg users by requiring them to learn a lesser known or entirely new user experience. Before Android, the user interface choices available to the developers of such devices were fairly limited and limiting.
很显然,嵌入式开发人员更倾向于为用户提供他们早已熟悉的操作界面,虽然这些界面过去很可能是基于视窗。因此,很多嵌入式设备都基于典型的窗口中心,台式机设计或台式机风格的界面。而苹果的IOS和谷歌的安卓系统已经引导用户使用基于点触的图形界面。这改变了用户的规范与期望,结合安卓的开源协议,嵌入式世界已经卷起了安卓浪潮。
Clearly, embedded developers prefer offering user an interface they are already familiar with. Although that interface might have been window-based in the past -- and hance a lot of embedded devices were based on classic window-centric, desktop-like or desktop-based interfaces -- Apple's IOS and Google's Android have forever democratized the use of touch-base iPhone-like graphical interfaces. This shift in user paradgims and expectations, combined with Android's open source licensing, have created a ground-swell of interest for Android within the embedded world.
不同于安卓应用开发人员,希望在任何平台使用安卓系统的开发者,在移植或适配安卓系统到嵌入式设备时,很快就会遇到一个严重的问题:几乎没有任何文档指示他们如何动手。所以,当应用开发人员欢乐地参考谷歌提供的在线文档,或是阅读O'Reilly的Learning Android等书籍时,嵌入式开发者只能在 http://source.android.com 中寻找一些零星的资料。对于从阅读安卓源码为开端的嵌入式工作者而言,他们使用安卓系统的乐趣被大大减少。
Unlike Android app developers, however, developers wanting to do any sort of platform work in Android, including porting or adapting Android to an embedded device, rapidly run into quite a significant problem: the almost total lack of documentation on how to do that. So, while Google provides app developers with a considerable amount of online documentation and while there are a number of books on the topic, such as O'Reilly's Learning Android, embedded developers have to contend with the minimalistic set of documents provided by Google at http://source.android.com. Embedded developers seriously entertaining the use of Android in their system were essentially reduced to starting with Android's source code.
出版这本书的目的巴拉巴拉巴拉
The purpose of this book is to remedy to that situation and enable you to embed Android in any device. You will therefore learn about Android's architecture, how to navigate its source code, how ot modify its various components, and how to create your own version for your particular device. In addition, you will learn how Android integrates into the Linux krenel and how to leverage Android's Linux heritage. For instance, we will discuss how to take "classic" Linux components such as glibc and BusyBox and package them as part of Android. Along the way, you will learn day-to-day tips and tricks, such as how to use Android's repo tool and integrate with or modify Android's build system.