第2章 初识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,以便让所设计的库适用范围更广。

时间: 2024-07-30 23:52:03

第2章 初识Android App(第1讲)的相关文章

MAC安裝《Genymotion Android模擬器》大玩Android APP (神魔之塔)

链接地址:http://www.minwt.com/mac/10083.html/comment-page-2 MAC» 智慧型裝罝» Android | 2014/02/12 Android是一個開放的平台,因此先前也分享了幾個Android的模擬器,但當初梅干使用Android模擬器,最主要的功能就是用來測試網頁,看網頁在Android手機上是否能正常運作,雖然說這些Android模擬器,也可透過Google Player安裝Android APP,在電腦中就可玩Android APP,但由

Android群英传笔记——第九章:Android系统信息和安全机制

Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个android帝国的强弱,所以厂商喜欢打配置战,本节就要是讲 Android系统信息的获取 PackageManager的使用 ActivityManager的使用 Android安全机制 一. Android系统信息的获取 由于android手机的开源性,手机的配置各种各样,那些优化大师之类的东西

Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

Android群英传神兵利器读书笔记--第三章:Android Studio奇技淫巧 这篇文章篇幅较长,可以使用版权声明下面的目录,找到感兴趣的进行阅读 目录 3.1 Android Studio使用初探 Project面板 Stucture面板 Android Monitor Keymap Tip of the Day 快速查找 Search Action 演示模式 3.2 Android Studio使用进阶 操作与导航 快速重构 代码模板 内置模板 自定义代码注释模板 代码分析 在Andr

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动画

Android基础入门教程——1.2.2 使用Android Studio开发Android APP

Android基础入门教程--1.2.2 使用Android Studio开发Android APP 标签(): Android基础入门教程 写在前面 本节将介绍如何使用Android Studio开发Android APP,和前面Eclipse + ADT + SDK搭建Android开发环境一样,本节也只是介绍一些基本东西,深入的,比如快捷键,小技巧等会再另一篇文章中详细地介绍! 1.下载Android Studio 官网下载:Android Studio for Window - 百度云下

Android App 内存泄露之Handler

Android App 内存泄露之Handler Handler也是造成内存泄露的一个重要的源头,主要Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不一致的 ,Handler引用Activity会存在内存泄露. 看一下如下代码 /** * * 实现的主要功能. * @version 1.0.0 * @author Abay Zhuang <br/> * Create at 2014-7-28 */ public class Handler

组件化封装思想实战Android App

第1章 课程概述通过本章让学生:1.了解本次项目实战主要有那些功能有,以及通过本次项目实战,学生可以掌握开发一个应用所需的全部知识.2.在课程安排上,我们主要以实际的开发顺序来讲解,保证学员能够所学即所得. 第2章 首页框架搭建本章正式开始我们的项目开发,在开发项目的过程中穿插我们要讲的知识点,本节课我们主要来目的:1.搭建好我们的HomeActivity, 实现HomeActivity中Fragment的切换.2.创建首页所需要的所有Fragment(空的Fragment,功能对应模块填充)

Android APP 调试过程中遇到的问题。

调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Android APP 调试过程中遇到的问题. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007192169/AndroidAPP调试过程中遇到的问题.html

使用javah生成.h文件, 出现无法访问android.app,Activity的错误的解决

在工程ndk22/bin/classes中 运行javah  com.cn.ndk22.Ndk22.Activity ,出现了.h文件 我在bin/classes目录中 ,就是无法访问, : 错误:无法访问android.app.Activity 找不到android.app.Activity 如下图所示 于是我cmd定位到ndk/src,中运行 javah com.heima.ndk.ndkActivity, 成功了就能成功了 ...我也不知道为什么.,如下图 总结:  使用javah生成.h