初识Android App(第1讲)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Android App(第1讲)相关的知识,希望对你有一定的参考价值。

2.1  认识android操作系统

Android最早由安迪•罗宾(Andy Rubin)创办,2007年被Google公司收购,Google公司凭借Android操作系统在智能手机上取得了巨大的成功。

1、Android操作系统的特点

Android操作系统是一个多用户的Linux系统,每一个应用程序都是一个独立的用户。系统默认为每一个应用程序分配一个唯一的Linux用户ID(这个ID只能被系统使用,并且对于应用程序来说,这个ID是未知的)。系统为一个应用程序的所有文件设置了权限,所以,只有分配给这个应用程序的用户ID才可以访问它们。

每一个进程有它主机的虚拟机(VM),所以一个应用程序的代码会独立于其它的应用程序运行。

默认情况下,每一个应用程序在它自己的Linux进程中运行。Android会在一个应用程序的任何一个组件需要被调用的时候启动这个进程。然后,当没有任何组件被调用或者系统需要为其它应用程序回收内存的时候,就关闭这个进程。

通过这种方式,Android系统实现了最少的特权原则。就是说,每一个应用程序,默认都只能调用它所需要的工作组件。这就创造了这样一种非常安全的环境,在这个环境中,一个应用程序不能访问没有被授予其权限的系统部分。

尽管如此,也有很多途径可以让一个应用程序和其它的应用程序共享数据,也可以让一个应用程序去调用系统服务:

  • 为两个应用程序分配同一个Linux用户ID是可行的,这样它们就能访问对方的文件。为了节约系统资源,拥有相同用户ID的应用程序也可以被运行于相同的Linux进程 并且共享VM(必须用相同的证书签名)。
  • 应用程序可以通过请求权限来访问设备数据,例如联系人、SMS信息、可插拔存储(SD卡)、相机、蓝牙、……等等。所有的应用程序权限必须在安装的时候由用户授予。

2、Android程序在系统中的存在方式

开发在Android操作系统上运行应用程序时,Android SDK工具负责编译代码,以及将任意数据并连同相关资源一块打包进一个Android包内,它实际上是一个以.apk为后缀的压缩文件。一个.apk文件中的所有代码就是一个Android应用程序。

在Android设备上安装应用程序就是安装.apk文件。

一旦安装成功,该Android程序就拥有了自己独立的运行沙盒(沙盒是在受限的安全环境中运行应用程序的一种做法,这种做法是要限制授予应用程序的代码访问权限)。

2.2  理解Android SDK和API版本

每个Android版本都有一个唯一的整数标识,称为API Level。由于用户使用的程序总是早于最新发布的API版本,所以实际的Android应用程序必须确保能在多版本API的环境中都能工作。

1、Android SDK和项目配置

Android SDK为我们提供了API链接库以及用于建立、测试与调试android应用的开发工具的集合。指定Android API版本配置前,要确保已经用Android SDK Manager安装了对应版本的Android SDK。

每个Android应用程序必须正确配置所使用的API级别,有三种:

  •   Target Framework – 使用哪种框架创建应用程序(编译用)。
  •    Minimum Android Version – 指定Android应用程序可使用的最低版本(运行用)。
  •    Target Android Version – 指定Android应用程序试图使用的版本(运行用)。

默认情况下,三种API设置为相同的值:

 技术分享

将“Target framework”更改为某个API版本,即可拥有该版本的所有API功能。如果希望兼容早期的Android版本,可修改“Minimum Android to target”选项:

技术分享

上图中的选项表明开发的Android应用程序可以安装在Android 4.0.3到Android 5.0之间所有版本的手机上,即API 15~API 21。但是,虽然可以安装在这些平台上,可并不能保证应用程序都能在这些平台上正常运行。例如,将程序安装到Android 4.0.3(API 15)平台上,可代码中却调用了比API 15更高版本的API,那么该程序肯定无法在Android 4.0.3平台上正常运行。因此,这种情况下,必须显式包含运行时检查:

if (Android.OS.Build.Version.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)

{

    builder.SetCategory(Notification.CategoryEmail);

}

(注:Android.OS.BuildVersionCodes.Lollipop是指Android 5.0)

2、Android API版本对照表

下表列出了各种Android版本及其对应的信息:

技术分享

从表中可以看出,Android的版本发布非常频繁,有时一年就发布几个版本。如何确保在如此多的版本中仍然能让应用程序可靠地运行?这就是API Level的作用。

3、API级别和自定义库

当创建Android Libraries项目时,应该让开发的库函数能应用于各种版本的API,因此一般不需要设置最低级别的API和最高级别的API,而是应遵循以下的最佳做法:

  • 引用某个版本的API时,要确保应用程序运行的API版本不低于所引用的版本。
  • 为其他安卓应用程序设计自定义的库函数时,要为该应用程序设置需要的最低API级别。

总之,要确保开发的库函数使用尽可能少的API,以便让所设计的库适用范围更广。

 

以上是关于初识Android App(第1讲)的主要内容,如果未能解决你的问题,请参考以下文章

视觉SLAM十四讲 第1-2讲 初识SLAM

Android 7.0 Gallery图库源码分析1 - 初识Gallery源码

Android App 在片段中创建 ListView 引用时关闭

用C#编写百度地图Android手机应用程序(第3讲)

[知了堂学习笔记]_JSON数据操作第1讲(初识JSON)

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段