2.1 Android平台与开发环境
Android平台包含了很多软件工具,这些工具被组织到以下几个层次中:Linux内核层、硬件抽象层(Hardware Abstract Layer,HAL)、Android运行层、C/C++类库层、系统框架层和应用程序层[4]。整个平台的结构如图2.1所示。其中,Linux内核层为平台运行提供操作系统级别的底层功能。硬件抽象层为一个中间过渡层次,该层次为平台上层提供统一的硬件访问接口;同时,该层屏蔽并简化了平台中上层对下层功能的访问。Android运行层为应用程序的运行提供必要的技术环境。C/C++类库层为平台提供必要的C或C++类库支持(如Android运行层和系统框架层中所需要使用的C/C++类库)。系统框架层由多个软件类库或模块组成,这些类库或模块大部分都基于开源软件进行架构;系统框架层为应用程序的开发、应用、管理等提供必要的技术支撑。最后是应用程序层,Android平台上的应用程序都属于这个层次。
Android应用开发一般基于XML(e Xtensible Markup Language)[5]、Kotlin或Java语言。程序编写完成以后,基于Android SDK(Android软件开发工具包)所提供的工具进行编译、打包并部署。每个应用的源程序编译结束以后会被组织成一个APK(Android Package的缩写)文件, APK文件一般包含编译以后的字节码、相关资源和第三方支持库等内容。APK文件可被部署到不同的设备上运行。每个Android应用在运行时具有独立的运行环境(也被称为“沙盒”)。Android平台工作过程中,系统针对应用程序会完成以下管理工作[4]。
● Android的基础是Linux,所以每个应用程序被看成是操作系统的一个用户;
● 默认情况下,操作系统会给每个应用程序分配一个用户标识;系统会给应用程序中的每个文件设置访问权限,这些文件只能通过应用程序的用户标识进行访问;
图2.1 Android平台结构
● 每个应用程序运行独立于其他应用程序;
● 默认情况下,每个应用程序拥有独立的系统进程,系统会根据需求启动进程,并在程序结束以后或不需要的情况下结束进程并回收相关系统资源。
Android应用程序通过应用组件构成,Android应用组件包含[4]Activity(活动,即可显示在设备上的界面,本书后续内容将Acitivity组件或相关实现称为“窗体”)、Service(服务)、Content Provider(内容提供者)和Broadcast Receiver(广播接收者)。一个活动(Activity)是在屏幕上独立显示的可交互组件(或窗体),Android应用中的窗体类都必须从Activity类继承而得。服务(也可称为应用服务)是在系统后台可长期运行的组件,一个服务不具备可交互的用户界面;Android应用中的服务类都必须从Service类继承而得。内容提供者可为其他应用程序提供数据、资源的存储和管理服务,该类组件必须从Content Provider类继承而得。广播接收者是对系统广播进行响应的组件,系统可以广播方式发送多种信息,如屏幕、电池使用状态,硬件工作情况等;这一类型的程序需要以Broadcast Receiver类为基本的实现基础。
Android应用程序的开发环境需要使用两个基础工具,分别为JDK(Java Development Kit)和Android SDK(Android Software Development Kit);在开发工具方面,Google公司推荐使用Android Studio软件。
1.Android SDK
Android SDK全称为Android软件开发工具包(Android Software Development Kit)。工具包中包含了程序开发所需要的软件、类库、设备模拟器等工具,以及文档、程序等技术资料。其中,特别需要关注的内容如下。
● SDK Platforms(SDK平台),即不同版本的Android开发平台;
● SDK Tools(SDK工具),即与开发相关的软件工具,具体包含调试、测试、程序安装、模拟器等工具;
● Android supports libraries(支持类库),即标准类库以外的其他开发类库;
● Documents(文档),即与开发相关的文档和教程等;
● Sample Apps(示例程序)。
2.Android Studio
Android Studio是Google公司推荐的Android应用程序集成开发环境,该工具基于Intelli J IDEA构建。Android Studio支持个性化定制,基于插件管理工具,开发人员可根据实际需要选择并安装多种工具插件。
使用Android Studio时,可直接通过集成开发环境来安装Android SDK;也可通过环境设置,调用工作环境中已安装的Android SDK。