-
2011-10-31
学习Android-Android初调试 - [Android]
系统库即可 )
-
2011-10-24
学习Android-了解Android(二) - [Android]
Android 通用架构
Android 有一个通用的展示软件栈的架构,即是如此图:
简单介绍:
Applications 层:主要是 Android 自带的 GMS(Google Mobile Service) 应用和应用开发者开发的应用;
Application Framework :主要是为 Application 开发者提供各种功能、服务和开发 API 。
Android Runtime(Core libraries and Dalvik Virtual Mache) :为应用运行提供运行环境的 Java 虚拟机和运行时库。
Libraries :主要是 Android 系统运行库和工具集;
C/C++ 库:
a) 标准 C/C++ 库 bionic : BSD 许可证,可以修改而无需公开源代码。提供 C/C++ 标准库绝大部分的功能,是一个专为嵌入式系统设计的轻量级标准库实现。相对于传统的 glibc ,其体积和内存占用很小。
b) C 语言工具库 libcutils :是 Android 系统中的基石库,基本上 Android 中所有的本地库和程序都链接了这个库。
c) init 进程:此进程是 Android 设备启动后,系统执行的第一个用户空间的可执行程序,由内核缺省直接启动,以守护进程的形式后台运行。提供以下功能:设备管理、解析并执行初始化脚本 init.rc 。
d) shell 工具: sh 和 toolbox 、 busybox 。
e) C++ 语言工具库 libutils :属于 Android 的底层库。以 C++ 实现,提供的 API 也是 C++ 接口规范。提供基本头文件、 Binder 框架以及使用 Binder 机制的相关库。
通过 Android 应用程序框架为开发者提供服务的 C/C++ 库 :
a) 系统 C 库:一个从 BSD 继承来的标准 C/C++ 系统函数库, 是专门为基于嵌入式 Linux 系统的设备定制的。即 bionic libc 库。
b) 媒体库:基于 PacketVideo OpenCORE 。该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
c) Surface Manager :对显示子系统的管理,并且为多个应用程序提 供了 2D 和 3D 图层的无缝融合。
d) LibWebCore :一个最新的 web 浏览器引擎用,支持 Android 浏览器和一个可嵌入的 web 视图
e) SGL - 底层的 2D 图形引擎
f) 3D libraries :基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D 加速(如果可用)或者使用高度优化的 3D 软加速。
g) SQLite :一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
系统工具集 :
a) 主要以 busybox 为主,链接 bionic libc 库,为大多数嵌入式 Linux 所采用。主要包含一些系统管理工具,全为文本命令行工具。
b) 另外 Android 官方也提供了专门的调试守护进程,如 adbd 等。
HAL :一个对硬件访问虚拟化的中间抽象层,接着我们详细介绍;
Linux Kernel :基于开源 Linux kernel 经过修改的支撑整个软件栈的基础操作系统内核,当前主要是依赖于 Linux kernel 2.6 。驱动主要分为两类,一类是 Android 专用驱动,其并不是硬件驱动,而主要是一些为上层提供服务的辅助功能层,比如 ashmem 、 logger 、 binder 、 power manager ;另一类则是设备驱动则,其多是硬件驱动,属于 Linux 内核标准的驱动,比如 fb 显示驱动 (LCD) 、输入设备驱动 ( 游戏杆、鼠标、键盘、触摸屏 ) 、视频驱动 (Camera) 、音频驱动、 MTD 存储设备驱动、网络驱动 ( 蓝牙、 WiFi 、 Ethernet) 等。驱动在内存映射的时候也分为 kernel space 和 user space ,放在 kernel space 都是需要遵循 GPL 开源的;放在 user space 中的驱动,是遵循 Apache/MIT 许可证的,可以不开源,其运行在 kernel space 之上。
Hardware Abstraction Layer:
HAL 是 Google 为了解决 Linux 开源许可证 GPL 和 Android 本身的 Apache 许可证冲突的一个硬件抽象层,主要原则是把控制硬件的动作都放到了 Android HAL 中,而 linux driver 仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到 user space 。
HAL 存在的原因:
1. 快速适配硬件设备中非 linux kernel 标准的接口;
2. 解决 Linux 开源许可证 GPL 与硬件设备厂商驱动的专利不兼容;通过 Android 的 Apache 许可证和 HAL 技术实现来解决这一难题;
3. 开放的满足设备厂商开发开与之驱动对应的特定需求的要求;
HAL 层具备如下特点:
1. 在用户空间 (user space) 而不是内核空间 (kernel space) ,可以是 c/c++ 库;
2. 将 Android platform 部分和系统硬件完全的进行了隔离开;
3. 向上层提供 Android platform 操作硬件的接口,向下要求硬件驱动对其功能进行实现; ( 比方说上层应用对于 Graphics, Audio, Camera, Bluetooth, GPS, Radio(RIL), Wifi 等的操作。 )
在编程方式上,上层应用通过 HAL 对硬件的操作有两种方式:
1. 通过 Java->JNI->*.so 库 (c/c++) ;
2. 通过 Java app->ApplicationManager->Service(java)->service(jni)->HAL->HAL stub->System Call 方式进行调用;
注:一般 HAL 动态库放在位置 /system/lib/hw 目录。
一般开发类型
1. Android 手机产品:构建硬件系统,移植 Android 软件平台系统;主要涉及设备驱动程序,以及在硬件抽象层实现标准接口等。
2. Android 应用程序:基于 Application Framework 和其他应用,开发应用程序;
3. Android 系统开发:主要是增强或者完善 Android 平台系统的功能,开发中主要包含如下部分:
a) 开发 c 或者 c++ 库;
b) 定义将要通过 JNI 提供的上层 Java 的系统 API 接口;
c) 封装 JNI ;
d) 通过 JNI 封装 Java 类和接口 API ,提供给 Android 应用使用;
Android 开发社区
Cyanogenmod 社区: http://www.cyanogenmod.com/
涉及开发语言: C/C++/Java 等。
-
2011-10-23
学习Android-了解Android(一) - [Android]
Android
Android 是 Google 公司为移动设备而开发的遵循 Apache/MIT 开源许可证、完全开发的、全软件栈操作系统。为 Android 应用开发者提供工具和框架;为用户提供一个不依赖硬件的通用平台;为设备商提供完整的解决方案。
Android is a comprehensive platform, which means it is a complete software stack for a mobile device.
For developers, Android provides all the tools and frameworks for developing mobile apps quickly and easily.
For users, Android just works right out of the box. Additionally, users can customize their phone experience substantially.
For manufactures, it is the complete solution for running their devices. Other than some hardware-specific drivers, Android provides everything else to make their devices work.
Android 生态系统
Google Android 开发系统由三个部分组成:
1. Android 源代码工程 (Open Source Project) 包括 Android 全部源代码 : https://source.android.com
2. Android 开发者 (Developer) 包括 SDK API 和文档 : https://developer.android.com
3. Android 应用市场 (Market) 是一个开发者发布应用程序的平台 : https://market.android.com/
Android 系统
Android 一词最早出现于法国作家利尔亚当( Auguste Villiers de l'Isle-Adam )在 1886 年发表的科幻小说《未来夏娃》( L' è ve future )中外表像人的机器起名为 Android ;
2003 年 10 月由 Andy Rubin 和 Rich Miner 创办一家公司 Android 专门研发 Android ;
2005 年 Google 收购了 Android 公司;
2007 年 11 月 5 日 Google 正式展示、发布了开源手机手机操作系统平台 Android 。 Google 宣布组建的一个全球性的联盟组织 - 开放手持设备联盟( Open Handset Alliance ),联盟将支持 Google 发布的手机操作系统或者应用软件,共同开发 Android 系统的开放源代码。开放手持设备联盟包括手机制造商、手机芯片厂商和移动运营商
2007 年 11 月 12 号发布 Google SDK 。
2008 年 8 月 18 日, Android 获得了美国联邦通信委员会( FCC )的批准;
2008 年 9 月 23 日,第一款 Android 手机发布, HTC Dream(G1) ;
2008 年, Patrick Brady 于 Google I/O 演讲“ Anatomy & Physiology of an Android ”,并提出的 Android HAL 架构图;
2009 年 2 月, Android 1.1 发布;
2009 年 2 月, Google 推出 Android Market 线上应用程序商店,用户可在该平台网页寻找、购买、下载及评级使用手机应用程序及其他内容;
2009 年 4 月 30 日, Android 1.5 Cupcake 版本发布;
2009 年 9 月 15 日, Android 1.6 Donut 版本发布;
2009 年 10 月 26 日, Android 2.0 Eclair 版本发布;
2010 年 2 月 3 日, Linux 内核开发者 Greg Kroah-Hartman 将 Android 的驱动程序从 Linux 内核“状态树”(“ staging tree ”)上除去,从此, Android 与 Linux 核心开发分道扬镳;
2010 年 5 月 20 日, 2.2 Froyo 版本发布;
2010 年 12 月 7 日, 2.3 Gingerbread 版本发布;
2011 年 2 月 2 日, 3.0 Honeycomb 版本发布;
2011 年 5 月 11 日, 3.1 Honeycomb 版本在 Google I/O 开发者大会宣布发布;
2011 年 7 月 13 日, 3.2 Honeycomb 版本发布;
2011 年 10 月 19 日, 4.0 Ice Cream Sandwich 版本发布;
Android 版本代号命名规则,从 Android 1.5 开始,按着 26 个英文字母的顺序作为首字母,选择一种甜点单词作为版本的代号;因此, Android 下一个版本发布的代号即是: Jelly Bean 。
Andy Rubin
纽约州 Chappaqua 长大,父亲拥有自己的消费电子直销公司,从小就接触各种最新的电子设备;
在纽约州由提卡学院读计算机科学。
毕业后在蔡司公司任机器人工程师。
1989 年加入苹果公司。
1990 年,苹果分拆他所在的手持计算和通信设备部门,成立 General Magic 公司,在这里他开发了手持设备操作系统 Magic Cap 。
公司倒闭后加入 Artemis Research ,开发了交互式互联网电视 WebTV 。
后与人创办 Danger 公司,担任 CEO ,但不久被免职。 Danger 公司开发了后来被称为 T-Mobile Sidekick 的手机,公司于 2008 年被微软收购。
2003 年与 Rich Miner 一起创办了 Android 公司。
2005 年 Android 公司被 Google 收购,任 Google 工程副总裁,领导开发了 Android 操作系统。
并拥有多项无线通信专利。
市场上手机操作系统
1. Apple iOS
2. Google Android
3. Microsoft Window Phone
4. Blackberry OS
5. HP WebOS
6. Nokia Symbian
7. Meego
8. Palm OS
9. Samsung Bada
10. Tizen
-
2010-09-11
摘要:40 Android Business Models - [Android]
Alex Curelea在Blog中从Sell app to individuals/Freemium/other sorts of products/srevices不同角度归纳了Android的四十种Business Model,分别是:
Model #1: Build the App, Sell the App to Individuals
Model #2: Make the App, Sell the App to Enterprises
Model #3: Make the App, Sell the App to Schools or Universities
Model #4: Make the App, Sell the App to OEMs
Model #5: Make the App, Sell the App to Content Providers
Model #6: Make the App, Sell the App to Service Providers
Model #7: Give Away the App, Sell the Customizations
Model #8: Give Away the App, Sell the Analytics
Model #9: Give Away the App, Sell the Remix
Model #10: Give Away the App, Sell the Bundle
Model #11: Give Away the App, Sell the Plugins
Model #12: Give Away the App, Sell the Feature Unlock Codes
Model #13: Give Away the App, Sell In-App Ads
Model #14: Give Away the App, Sell the Account
Model #15: Give Away the App, Sell Support
Model #16: Give Away the App, Sell the API
Model #17: Give Away the App, Sell the Content
Model #18: Give Away the App, Sell Premium Placement
Model #19: Give Away the App, Sell the Firm
Model #20: Sell Development Tools
Model #21: Sell Portability Toolkits
Model #23: Create a Content Marketplace
Model #24: Create an Android Job Board
Model #25: Create an Android Site Ad Broker
Model #26: Create Hardware Add-Ons
Model #27: Create Device Accessories
Model #28: Write Books
Model #31: Internationalization and Localization
Model #32: Bug Hunter
Model #33: User Experience Designer
Model #34: JAR Porter
Model #35: API Wrapper
Model #36: App Promoter
Model #37: App Market Agent
Model #38: Device Marketer
Model #39: Trainer
Model #40: Break Outside the Box









