Android 那些事儿

Table of Contents

→ 摘录自 https://www.runoob.com/android/android-tutorial.html

Android 是什么1

Android 是一个开源的,基于 Linux 的移动设备操作系统,由谷歌及其他公司带领的开放手机联盟开发。

Android 提供了一个统一的应用程序开发方法,这意味着开发人员只需要为 Android 进行开发,这样他们的应用程序就能够运行在不同搭载 Android 的移动设备上。

谷歌在2007年发布了第一个测试版本的 Android 软件开发工具包(SDK),第一个商业版本的 Android 1.0,则发布于2008年9月。

Android 源代码是根据自由和开放源码软件许可证。谷歌发布的大部分代码遵循 Apache 许可证2.0版,Linux 内核的变化遵循 GNU 通用公共许可证版本 GPL2.0。

Android 应用程序

Android 应用程序一般使用 Android 软件开发工具包,采用 Java 语言来开发。

本教程的写作目的是教会你如何开发并打包 Android 应用程序。我们将从 Android 应用程序编程环境设置开始,然后深入 Android 应用程序开发的各个方面。

市场上有许多 Android 应用。主要类别有:

Android 的历史:

Android 开发环境搭建

以下是开始开发 Android 应用程序需要用到的软件列表:

- Java JDK5 或 以后版本
- Android SDK
- Java 运行时环境(JRE)
- Android Studio
- (可选的) Java 开发者使用的 Eclipse IDE
- (可选的) Android开发工具 (ADT)Eclipse 插件

Android Studio 的安装可以参考 https://www.runoob.com/android/android-studio-install.html

Android 架构

Android 操作系统是一个软件组件的栈,在架构图中它大致可以分为五个部分和四个主要层。

1. Linux 内核

在所有层的最底下是 Linux,包括大约 115 个补丁的 Linux 3.6 。它提供了基本的系统功能,比如进程管理、内存管理、设备管理(如摄像头、键盘、显示器)。同时,内核处理所有 Linux 擅长的工件,如网络和大量的设备驱动,从而避免兼容大量外围硬件接口带来的不便。

2. 程序库

在 Linux 内核层的上面是一系列程序的集合,包括开源的 Web 浏览器引擎 Webkit、知名的 libc 库等,用于仓库存储和应用数据共享的 SQLite 数据库,用于播放、录制音视频的库,用于网络安全的 SSL 库等。

(1)Android 程序库

这个类别包括了专门为 Android 开发基于 Java 的程序库,这个类别程序库的示例包括应用程序框架库,如用户界面构建,图形绘制和数据库访问。

一些 Android 开发者可用的 Android 核心程序库总结如下:

描述
android.app 提供应用程序模型的访问,是所有 Android 应用程序的基石
android.content 方便应用程序之间,应用程序组件之间的内容访问,发布,消息传递
android.database 用于访问内容提供者发布的数据,包含 SQLite 数据库管理类
android.opengl OpenGL ES 3D 图片渲染 API 的 Java 接口
android.os 提供应用程序访问标注操作系统服务的能力,包括消息,系统服务和进程间通信
android.text 在设备显示上渲染和操作文本
android.view 应用程序用户界面的基础构建块
android.widget 丰富的预置用户界面组件集合,包括按钮,标签,列表,布局管理,单选按钮等
android.webkit 一系列类的集合,允许为应用程序提供内建的 Web 浏览能力

看过了 Android 运行层内的基于 Java 的核心程序库,是时候关注一下 Android 软件栈中的基于 C/C++ 的程序库。

(2)Android 运行时

这是架构中的第三部分,自下而上的第二层。这个部分提供名为 Dalvik 虚拟机的关键组件,类似于 Java 虚拟机,但专门为 Android 设计和优化。

Dalvik 虚拟机使得可以在 Java 中使用 Linux 核心功能,如内存管理和多线程。Dalvik 虚拟机使得每一个 Android 应用程序运行在自己独立的虚拟机进程。

Android 运行时同时提供一系列核心的库来为 Android 应用程序开发者使用标准的 Java 语言来编写 Android 应用程序。

3. 应用框架

应用框架层以 Java 类的形式为应用程序提供许多高级的服务,应用程序开发者被允许在应用中使用这些服务。

  • 活动管理者 - 控制应用程序生命周期和活动栈的所有方面;
  • 内容提供者 - 允许应用程序之间发布和分享数据;
  • 资源管理者 - 提供对非代码嵌入资源的访问,如字符串,颜色设置和用户界面布局;
  • 通知管理者 - 允许应用程序显示对话框或者通过通知给用户;
  • 视图系统 - 一个可扩展的视图集合,用于创建应用程序用户界面。

4. 应用程序

顶层中有所有的 Android 应用程序,我们写的应用程序也被安装在这层,如通讯录、浏览器、游戏等。

Android 应用程序组件

应用程序组件是一个 Android 应用程序的基本构建块,这些组件由应用清单文件松耦合的组织, AndroidManifest.xml 描述了应用程序的每个组件,以及他们如何交互。

以下是可以在 Android 应用程序中使用的四个主要组件。

组件 描述
Activities 描述 UI,并且处理用户与机器屏幕的交互
Services 处理与应用程序关联的后台操作
Broadcast Receivers 处理 Android 操作系统和应用程序之间的通信
Content Providers 处理数据和数据库管理方面的问题

Activities

一个活动标识一个具有用户界面的单一屏幕。

举个例子,一个邮件应用程序可以包含一个活动用于显示新邮件列表,另一个活动用来编写邮件,再一个活动来阅读邮件。

当应用程序拥有多于一个活动,其中的一个会被标记为当应用程序启动的时候显示。

一个活动是 Activity 类的一个子类,如下所示:

1: public class MainActivity extends Activity {
2:     // ...
3: }

Services

服务是运行在后台,执行长时间操作的组件。

举个例子,服务可以是用户在使用不同的程序时在后台播放音乐,或者在活动中通过网络获取数据但不阻塞用户交互。

一个服务是 Service 类的子类,如下所示:

1: public class MyService extends Service {
2:     // ...
3: }

Broadcast Receivers

广播接收器简单地响应从其他应用程序或者系统发来的广播消息。

举个例子,应用程序可以发起广播来让其他应和程序知道一些数据已经被下载到设备,并且可能供他们使用。因此广播接收器会拦截这些通信并采取适当的行动。

广播接收器是 BroadcastReceiver 类的一个子类,每个消息以 Intent 对象的形式来广播。

1: public class MyReceiver extends BroadcastReceiver {
2:     // ...
3: }

Content Providers

内容提供者组件通过请求从一个应用程序到另一个应用程序提供数据。 这些请求由 ContentResolver 类的方法来处理,这些数据可以是存储在文件系统、数据库或者其他地方。

内容提供者是 ContentProvider 类的子类,并实现一套标准的 API ,以便其他应用程序来执行事务。

1: public class MyContentProvider extends ContentProvider {
2:     // ...
3: }

附件组件

有一些附件的组件用于以上提到的实体、他们之间逻辑、及他们之间连线的构造,这些组件如下:

组件 描述
Fragments 代表活动中的一个行为或者一部分用户界面
Views 绘制在屏幕上的 UI 元素,包括按钮、列表等
Layouts 控制屏幕格式,展示视图外观的 View 的继承
Intents 组件间的消息连线
Resources 外部元素,例如字符串资源、常量资源及图片资源等
Manifest 应用程序的配置文件

Hello World

Android 应用程序剖析

在运行应用之前,我们来认识一下 Android 项目中的一些文件目录和文件。

文件夹/文件 说明
src 包含项目中所有的 .java 源文件,默认情况下,它包括一个 MainActivity.java 源文件对应的活动类,当应用程序通过应用图标启动时,将运行它。
gen 这包含由编译器生成的 .R 文件,引用了所有项目中的资源,该文件不能被修改。
bin 这个文件夹包含 Android 由 APT 构建的 .apk 包文件,以及运行 Android 应用程序所需要的其他所有东西。
res/drawable-hdpi 这个目录下包括所有的为高密度屏幕设计所需的 drawable 对象。
res/layout 这个目录存放用于定义用户界面的文件。
res/values 这个目录存放各种各样的包含一系列资源的 XML 文件,比如字符串和颜色的定义。
AndroidManifest.xml 这个是应用程序的清单文件,描述了应用程序的基础特性,定义它的各种组件。

Android FAQ

Android studio 配置国内镜像源2

几个国内镜像源:

# 东软信息学院
- mirrors.neusoft.edu.cn            port:80
# 北京化工大学
- ubuntu.buct.edu.cn/ubuntu.buct.cn port:80
# 电子科技大学
- mirrors.dormforce.net             port:80

如何配置呢?

File -> setting -> System Settings -> HTTP Proxy ,配置镜像地址,如下:

重启 AS 查看。

如果配置后还不可以,则有可能得查一下 Android SDK 中 SDK Update Sites 中的配置,如上右图。

Waiting for Target Device to Come Online3

打开 AVD manager,选中你的模拟器,右键,wipe,擦出数据,OK。

Footnotes:

Date: 2020-12-04 Fri 10:43

Author: Jack Liu

Created: 2021-01-01 Fri 14:34

Validate