ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android详细教程(基础篇):一、环境搭建以及Android框架结构说明

2019-04-08 09:50:53  阅读:341  来源: 互联网

标签:教程 程序 应用程序 Android SDK 框架结构 数字证书 android


1.1. 环境搭建

如果现在要开发的是java程序,则肯定需要JDK的支持,同样如果要开发Android的程序肯定也需要Android SDK的支持。如果要想下载Android SDK,则可以直接登录直接下载。
不管使用何种SDK的版本都是可以的,因为它可以自动的帮助用户进行升级。但是需要注意的是Android SDK这个开发包本身只是一个开发的容器所在,并不会提供具体的Android操作系统,这些操作系统需要单独下载。可以点击下载的SDK中的SDK Manager.exe进行下载(打开SDK Manager.exe工具之后会自动的连接到Android站点上列出所有的开发包<不同的Android版本>,Android2.3及以下版本主要用于手机开发,Android3.0及以上版本主要用于平板电脑开发),
注意:关于使用SDK Manager.exe,如果要使用此工具,则必须有一个前提,就是需要配置好JDK,因为Android的开发也需要java的支持。
需要配置好JAVA_HOME、PATH两个属性,如果有必要把classespath也配置上。
安装SDK也可以现在装上eclipse后,通过eclipse来进行安装。

昨日在Eclipse中搭建Android开发环境,遇到了不少的问题,分享给大家,希望能给其他人带来帮助。

步骤一、下载并安装SDK

地址:http://developer.android.com/sdk/index.html
进入后可以看到右边有一个很大的按钮:“Download the SDK ADT Bundle for Windows”。注意这个东西是捆绑下载,也就是说如果你本地没有Eclipse开发工具,可以直接下载这个包,里面已经有Eclipse,并且相关的东西已经配置好了的。如果你已经有Eclipse,请不要点击这个!!而是打开下面的一个连接

“USE AN EXISTING IDE”

就可以看到“Download the SDK Tools for Windows”的按钮,点击进入下载页面。
点击“I have read and agree with the above terms and conditions”同意相关服务条款,才能点击下载

下载完成后,点击进行安装(这里就不截图了)。安装完成以后,还需要配置adroid.bat工具,把android SDK包下的tools路径加载到path环境变量中,如:
我的sdk 下的tools路径在:

  D:\AndroidProgramFile\tools\android-sdk-windows\tools

在这里插入图片描述

由于下载的SDK没有包含具体的Android SDK版本,所以需要选择具体的版本进行下一步的SDK安装。

步骤二、安装Eclipse插件

点击help-install new software
添加一个Location(点击Add按钮),弹出的页面中输入Location的名字和地址:
名字:Android(可以自己随便取)
地址:https://dl-ssl.google.com/android/eclipse/

填好以后,点击OK保存。然后到Install的窗口的Work with 下拉框里面就可以看到我们刚刚添加的Android的Location了。
点击这个Location,开始扫描该地址的插件信息。
在这里插入图片描述
注意,很多人可能会卡在这一步(包括我),Eclipse一直在加载这个Location的信息,反应很慢,最后直接time out错误了。
我记得之前我们有同事折腾了一个下午,都没有搞定……
什么原因呢?很简单,我们伟大的 长城防火墙 干的!

我们需要为dl-ssl.google.com配置一个域名解析。
打开本地hosts文件(一般在C:\Windows\System32\drivers\etc)。添加下面的映射:

74.125.237.1       dl-ssl.google.com

现在重新在加载这个Location,是不是发现速度一下飞跃了?!
在这里插入图片描述

好了,插件信息扫描好以后,就开始下载了。问题又来了:
Eclipse一直卡在下载一个来自regex-util.sourceforge.net的包,过了10分钟还是没有响应。

于是上网查了一下,果然,sourceforge.net也被墙了(这里对这么一个全球性的代码托管网站被墙了表示无限愤慨一下!!!)。
那就再加一个hosts映射呗:

216.34.181.99  regex-util.sourceforge.net

好了,这下终于可以顺利下载安装了。
安装完成后,需要重启Eclipse。

安装完成后,注意到Eclipse配置项中查看一下Android的SDK是否已经配置好了(我安装的时候Eclipse已经自动帮我配置好了),
如果没有配置就配置一下你安装的SDK路径即可
如我的android SDK目录所在D:\AndroidProgramFile\tools\android-sdk-windows
在这里插入图片描述
点击运用->OK,就完成了

步骤三:需要新建一个模拟器:

打开Android Virtual Devices 按钮(Eclipse工具栏,新版本模拟器管理器 跟 SDK管理器 是分开的),新建一个模拟器。
如果你不想输入太多东西,可以从Devices definitions选项卡中选中指定的模拟器类型,直接新建一个即可。
配置android虚拟机(可以配置多个SDK版本的android虚拟机)
点击已经装好的插件 Adroid Virtual Devices
在这里插入图片描述
弹出
在这里插入图片描述

新建或者编辑:
在这里插入图片描述

步骤四、搭建测试项目

我下载的最新版Android4.3,所以新建项目的时候可能跟网上流传的老版本有些差异。
选择新建Android Application Project,填入项目信息(HelloWorld)。
项目建好后,不需要配置什么东西,或者添加什么代码。
先选中项目右键运行一下吧。run as-Android Application

注意,如果你的电脑配置不太好的话,运行会很慢(可能一直卡在开机画面),耐心等待吧……
如果出现了helloworld的画面,恭喜你,环境搭建好了!

注:juno版本的Eclipse无法安装ADT的错误解决办法
如果eclipse用的版本是juno的,可能会出现以下问题:

Cannot complete the install because one or more required items could not be found.
  Software being installed: Android Native Development Tools 21.1.0.v201302060044-569685 (com.android.ide.eclipse.ndk.feature.group 21.1.0.v201302060044-569685)
  Missing requirement: Android Native Development Tools 21.1.0.v201302060044-569685 (com.android.ide.eclipse.ndk.feature.group 21.1.0.v201302060044-569685) requires ‘org.eclipse.cdt.feature.group 0.0.0′ but it could not be found

问题原因:
原来就是eclipse插件CDT(增加对C的支撑)丢失了
解决方法:

1. 下载地址:http://www.eclipse.org/cdt/downloads.php

我下载的是最新版本cdt-master-8.1.2.zip

2. 安装到eclipse上

步骤:Eclipse ->Help -> Install New Software -> 点击ADD添加 -> 名称填写CDT ,地址那里选择Archive,然后选择已下好的cdt-master-8.1.2.zip -> OK下一步下一步…最后重启Eclipse
备注问题:
在安装CDT的过程中可能还会出现一种错误如下:

Cannot complete the install because one or more required items could not be found.
  Software being installed: C/C++ Remote Launch 6.0.0.201109151620 (org.eclipse.cdt.launch.remote.feature.group 6.0.0.201109151620)
  Missing requirement: C/C++ Remote Debug Launcher 2.3.0.201109151620 (org.eclipse.cdt.launch.remote 2.3.0.201109151620) requires ‘bundle org.eclipse.rse.ui [3.0.0,4.0.0)' but it could not be found
  Cannot satisfy dependency:
    From: C/C++ Remote Launch 6.0.0.201109151620 (org.eclipse.cdt.launch.remote.feature.group 6.0.0.201109151620)
    To: org.eclipse.cdt.launch.remote [2.3.0.201109151620]

解决方法:
原因是缺少了org.eclipse.rse.ui,需要单独下载RSE组件,即RSE-runtime-3.3.1.zip ,
下载地址:http://www.eclipse.org/downloads/download.php?file=/tm/downloads/drops/R-3.3.1-201109141310/RSE-runtime-3.3.1.zip
解压缩之后把features和plugins下面的文件拷贝到eclipse的对应目录下去,然后重启eclipse即可。然后再次安装CDT就可以成功完成啦

1.2. Android各参数详解

  • AVD Name:自定义虚拟的名称,不能有空格或者其他非法字符,否则不能创建,即Creat AVD不能高亮点击。
  • Target:选择要运行的android 版本(也可理解为内核?),此处有两个版本,取决于你在最初时下载的选择,个人理解这两个同样为2.2版本差异在
    从名称上不难理解,一个是优化后的内核包,一个是google原生态的,当然这两个都是Google原版本,未被做过其他改动,通过查看img以及表现在
    系统启动后安装的一些自带软件和功能上的差异,原生态的占用内存小;以及在皮肤,字体,地图等一些外在差异。
  • Size:就是要模拟卡存储卡的大小,视个人需求而定,推荐256MB以上,此处的KiB就是KB,MiB就是MB。如果有用过的映像文件可直接使用。文件存在:
    C:/Documents and Settings/Administrator/.android/avd/sdk2.2.avd/sdcard.img,如果分配太大则会占用更多的系统空间。如果有需要可以将其备份,
    以供以后直接使用,选择File直接载入即可。
  • Skin:Built-in其实就是定义屏幕尺寸的像素,可以使用由SDk直接提供的常见分辨率,具体的可查看(你的文件解压存放路径)android-sdk-windows/platforms/android-8/skins/;
    HVGA 320480像素;QVGA 320240像素;WQVGA400 400240像素;WQVGA432 432240像素;WVGA800 800480像素;WVGA854 854480像??
    Resolution就是自定义分辨率,除非有特殊需求,否则不建议自定义,因为自定义的尺寸没有对应的右侧界面,当然你也可以自己做对应的此存的皮肤。
    一般选择好尺寸后在Hardware中会自动增添一项abstracted lcd density,默认是160,下文解释此处。
  • Hardware:Abstracted Lcd Density默认160,最直接的表现就是手机图标和文字的大小,120最小,可根据分辨率的大小自定义,一般推荐使用默认值即可。
  • SD Card Support 是否支持插入/弹出闪存卡;
  • Dpad Support 是否要让手机支持DPad键,默认为yes,表示支持。DPad键就是手机上的那些Home键、返回键、电话键、电源键。
    不过测试表明即使no,皮肤上的那些键也可用,可以理解为外设之类的手柄,键盘等。
  • Accelerometer:是否要让手机支持加速器功能,默认为yes,表示支持。
  • Maximum horizontal camera pixels若让手机支持照相机功能,接着会要求定义照相机的像素,默认水平像素为640。
  • Cache partition size要指定/cache分割区的大小,默认值为66 MB。
  • Audio playback support是否要让手机支持音乐播放功能,默认为yes,表示支持。
  • Track-ball support:是否要让手机支持轨迹球功能,默认为yes,表示支持。
  • Maximum vertical camera pixels:让手机支持照相机功能,接着会要求定义照相机的像素,默认垂直像素为480。
  • Camera support: 手机是否支持照相功能,默认no。
  • Battery support:是否要让手机支持电池功能,默认为yes,表示支持。
  • Touch-screen support:是否要让手机支持触碰屏幕功能,默认为yes,表示支持。
  • Audio recording support:是否要让手机支持音乐录制功能,默认为yes,表示支持。
  • GPS support :是否支持手机 定位,默认yes。
  • Cache partition support:是否要让Android手机系统支持额外的/cache分割区,这样放在/cache的暂存文件不会使用到Android系统空间,默认为yes,表示支持。
  • Keyboard support:是否要让手机支持QWERTY键盘输入功能,默认为yes,表示支持。
  • Max VM application heap size:最大虚拟机应用程序堆大小,就是系统最低内存阀值,当运行低于这个值,系统会结束一些进程,默认值16。
  • Device ram size:是否要更改手机的内存容量,默认值为96 MB,建议更改为256 MB以上。
    推荐定制设置:Size:512MB
  • Skin:Built-in -> HVGA
  • Hardware:Abstracted Lcd Density 160 (可自定义,输入其他值也可比如200) Cache partition size 128MB
  • Camera support yes
  • Device ram size 512
  • 语言设置为setting -> language & keyboard -> select language,界面中文在重启后生效。

至此发现:

  • 1、C:/Documents and Settings/Administrator/.android/avd下即为配置文件,在下一节目录中可找到配置文件config.ini,进行相应参数的更改。更改配置文件后需要重新启动模拟器才行。
    直接使用模拟器新建相同名称的,并选择进行覆盖,也可更改参数,可立即生效。
  • 2、运行(你的文件解压存放路径)android-sdk-windows/tools/android.bat,放送到桌面快捷方式,可启动模拟器。

也发现一点小问题:

  • 1、模拟器进程emulator.exe比较消耗CPU,运行程序时酷睿双核的常常占到30-40;
  • 2、鼠标操作反应不好,延迟感严重,比较不爽。(待解决)
    My Android – lasted

设置虚拟机屏幕的大小

运行(Start)虚拟机后,会弹出一个对话框:

  • Launch option,主要可以用来设置虚拟机屏幕与电脑屏幕的比例关系,以及重置虚拟机。
  • Scale display to real size:选中后可以自定义设置。
  • Screen size(in):虚拟机屏幕像素尺寸,默认值3。
  • Monitor dpi:电脑屏幕的每英寸像素点数,默认值96,点击问号可以设置电脑尺寸和分辨率,会自动算出当前电脑的dpi。
    比如我的电脑屏幕尺寸14’,分辨率1600*900,对应的的dpi为131.,看起来就是一个精细程度。
  • Scale:该值表示虚拟机屏幕与实际屏幕的映射关系,值为1表示两者相对应,小于1,屏幕将被缩小,反之则放大。
  • Wipe user data:清除用户自定义数据,重置虚拟机。

1.3. 第一个Android项目

新建Android项目。(新建一个Android程序,以验证开发环境是否搭建成功)
在Eclipse中依次选择菜单:File->New->Project…。
在这里插入图片描述

 弹出“New Project”对话框,选中:Android->Android Project,点击“Next”按钮。

在这里插入图片描述
弹出“New Android Project”对话框:

  • Project Name中输入:hello
  • Build Target中选择:Android 2.2复选框
  • Appication name中输入:hello_android
  • Package name中输入:com.android.test
  • Create Activity中输入:HelloAndroid
    点击“Next”按钮。

在这里插入图片描述

弹出“New Android Test Project”,因为是一个小的演示项目,所以不需要创建测试项目。直接点击“Finish”按钮即可。
在这里插入图片描述

编辑HelloAndroid.java文件。

package com.android.test;
	
	import android.app.Activity;
	import android.os.Bundle;
	import android.widget.TextView;
	
	public class HelloAndroid extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	TextView textView = new TextView(this);
	textView.setText("Hello Android!");
	setContentView(textView);
	}
	}

在这里插入图片描述

运行Android项目。(接下来是见证奇迹的时刻~)
编辑好HelloAndroid.java文件之后,就可以运行看看效果了。
工具栏的运行按钮,或选择菜单:Run->Run,会弹出“Run As”对话框,选择“Android Application”,点击“OK”按钮。
在这里插入图片描述

AVD加载的速度有些慢,需要耐心等待。

等待几分钟后就会出现Android待机界面。

在这里插入图片描述

接着就会自动运行刚才的项目,可看到效果。如果看到“Hello Android!”的字样就表示运行无误。
查看android运行的信息,通过LogCat查看android运行信息。
ctrl+F11能让android虚拟机屏幕横屏显示,切换回来也是ctrl+F11
常用android虚拟机的快捷键
在这里插入图片描述

1.4 . Android打包时需要进行签名,签名后的项目可直接运行在手机上了。

1.4.1. 通过eclipse进行签名的基本流程(基础部分)

使用android的开发除了开发简单之外,最重要的是它的发布方便,就是将其可以发布到手机上运行,如果要想运行,需在AndroidMainfest.xml文件中添加此行(随着版本不同,此权限也会不同)

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

此权限的含义是允许进行包的安装,当然版本越高,这个内容会不需要配置,
如果要想打包发布Android程序,则需要证书

Eclipse ->file->Export->Android->Export Android Application

在这里插入图片描述

选择下一步
在这里插入图片描述
选择Android项目,点击Next,创建新的密码存储,Location任选,如:
在这里插入图片描述
点击Next,创建证书信息,如:
在这里插入图片描述
Validity:有效期
点击 Next,选择导出位置(文件名随便取),如导入到桌面:
在这里插入图片描述在这里插入图片描述

以后可以直接找一个支持Android操作系统的手机安装上此程序即可,而且所有的Android应用程序的后缀都是*.apk文件,这个文件与jar文件很相似,可以直接用WinRAR文件打开,但它绝不是WinRAR文件。

1.4.2. Android数字签名学习笔记(高级部分)

在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。

同一个开发者的多个程序尽可能使用同一个数字证书,这可以带来以下好处。

(1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
(2)有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
(3)可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。
在签名时,需要考虑数字证书的有效期:
(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
(3)Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。

Android数字证书包含以下几个要点:

  • (1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
  • (2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
  • (3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
  • (4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
  • (5)Android使用标准的java工具 Keytool and Jarsigner 来生成数字证书,并给应用程序包签名。
  • (6)使用zipalign优化程序。
    Android系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。Android的开发工具(ADT插件和Ant)都可以协助开发者给apk程序签名,它们都有两种模式:调试模式(debug mode)和发布模式(release mode)。
    在调试模式下,android的开发工具会在每次编译时使用调试用的数字证书给程序签名,开发者无须关心。
    当要发布程序时,开发者就需要使用自己的数字证书给apk包签名,可以有两种方法。
    (1)在命令行下使用JDK中的和Keytool(用于生成数字证书)和Jarsigner(用于使用数字证书签名)来给apk包签名。
    (2)使用ADT Export Wizard进行签名(如果没有数字证书可能需要生成数字证书)。

使用Keytool和Jarsigner给程序签名

命令:

keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000

该命令中,-keystore ophone.keystore 表示生成的证书,可以加上路径(默认在用户主目录下);-alias ophone 表示证书的别名是ophone;-keyalg RSA 表示采用的RSA算法;-validity 20000表示证书的有效期是20000天。
在这里插入图片描述
此时,我们会在互用主目录下看到ophone.keystore,即我们刚刚创建的证书。
接着对程序进行签名:
jarsigner用法: [选项] jar 文件别名
jarsigner -verify [选项] jar 文件
执行:
jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android 就可以生成签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了。(不过在我的JDK目录下没有找到jarsigner这个程序,不知道是怎么回事)
在这里插入图片描述

使用ADT Export Wizard进行签名

应用程序(apk)签名,在EC中,右键单击应用程序工程,如图选择
在这里插入图片描述
选择证书的存放路径,填写相关资料,完成,即可生成被签名的apk文件。如下图所示:
在这里插入图片描述
如上图所示,我们可以看到也可以在这里选择”Create new keystore“来创建一个证书。输入密码,点击下一步,填写相关信息,如下图所示。
在这里插入图片描述

使用zipalign优化APK

根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可
以被多个进程访问,安装的过程包括如下几个步骤:
Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
Home application读取当前APK的Name和Icon等信息。
System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。
最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资
源的可复用性。
zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将
Data structure alignment(数 据结构对齐标准:DSA)限定为4-byte boundaries。如果不采取对齐的标 准,处
理器无法准确和快速的在内存地址中定位相关资源。目前的系统中使用fallback mechanism机制处理那些没
有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对
于这样的应用程序 将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效
率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源 (battery life)。

命令行方式手动优化:

利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。
这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk

使用ADT自动优化:

从 ADT 0.9.3版本开始,可以通过export wizard自动对发布的application packages执行align操作。设置方法:
鼠标右键点击Project,然后选择”Android Tools” > “Export Signed Application Package…”。
综上所述,可以使用Keytool、Jarsigner、zipalign 给程序签名并优化程序,这样就需要三个不同的工具:
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android
zipalign -v 4 android123_signed.apk android123_signed_aligned.apk
当然,也可以通过ADT插件中Export Signed Application Package…来执行,图形界面更为简单、形象、直观。
参考:blog.csdn.net/zgfee/archive/2009/11/11/4796831.aspx
Android SDK:androidappdocs.appspot.com/guide/publishing/app-signing.html
android123.com.cn/androidkaifa/173.html
yarin.javaeye.com/blog/549280
androidres.com/index.php/2009/10/18/use-zipalign-to-optimize-your-application-packages/

1.5. Android框架结构说明:

在这里插入图片描述
图中的软件层次自上而下分成4个层次

    1. 应用程序(Application)
    1. 应用程序框架(Application Framework)
    1. 各种类库(Libraries)和android运行时(Adnorid Runtime)
    1. Linux kernel(Linux 内核层)

一.应用程序(Application)

应用层是和用户交互的一个层次,用户可以看得见的一些应用,用户可以操作。这类应用基本都是通过Java
语言编写的独立的能够完成某些功能的应用程序。 Android本身提供了桌面(Home),联系人(Contacts),
拨打电话(Phone),浏览器(Browers)等很多基本的应用程序。开发人员可以使用应用框架提供的API编写
自己的应用程序,普通开发人员要做的事情就是开发应用层的程序提供给广大消费者使用。

二.应用程序框架(Application Framework)

普通开发者可以使用Android基本应用程序使用的系统API,android 应用框架中的各个模块都可以被

复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好的更轻松的开发出优秀的android应用。
开发过程中常用到的基本框架组件如下:

  1. 一组View(UI 组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表)
    等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。
  2. Content Providers(内容提供者),听起来有点抽象,通俗的理解Content Provider 就是提供一种服务,通过
    这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也
    可以访问通讯录中存储的联系人信息。
  3. Resource Manager 顾名思义就是资源管理,android中的资源很多包括图片,用户界面(Layout xml),字体,
    颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都是通过Resource Manager来统一进行管理。
  4. Notification Manager(消息通知管理),它在不影响用户正常操作和使用设备的时候在状态栏上提供消息的提示。
    比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的看到。
  5. Activity Manager(活动管理),Activity管理着应用程序的生命周期,并且控制着应用的导航,扮演控制器的
    角色。每个Activity类似于Windows应用中的一个window。一般的应用都是通过一个个Activity交互构成的。
  6. Window Manager(窗口管理),管理所有启动的窗口。
  7. Location Manager(位置管理),用来管理地图服务的相关功能。
  8. Telephoney Manager(电话管理),用来管理有关的电话的相关功能。
  9. Package Manager(包管理),管理所有的安装在android系统内的应用程序。

三.库(Libraries)和运行环境 (RunTime)

这部分内容开始涉及底层,开发普通的应用不会直接对这个层进行操作。这层中包含了一组类库(Libraries)
和运行时(RunTime),

  1. 系统C库(libc),一个从BSD集成来的标准C系统函数库(libc)它是专门为基于嵌入式Linux的设备定制的。
  2. 媒体库(Media Framework),基于PackeVideo OpenCore,该库支持多种常用的音频,视频格式以及回放和录制,
    同时支持静态图像文件。编码格式包括:MPEG4、H.264,MP3、AAC、AMR、JPG、PNG。
  3. Surface Manager 对显示子系统的管理,并且为多个应用提供2D,3D图层的无缝融合。
  4. WebKit,一个最新的web浏览器引擎,用来支持Andiroid浏览器或者嵌入的web视图。
  5. SGL 底层的2D图形引擎。
  6. OPENGL|ES,基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速或者使用高度优化的3D软加速。
  7. FreeType,位图(bitmap)和适量(vector)字图显示支持。
  8. SQLite,一个对所有应用程序可用,功能强大的轻量级关系型数据库引擎。
  9. Core Libraries 该核心库提供了Java编程语言核心库的大多数功能。
  10. Dalvik VM, android平台的一个虚拟机,它相当于PC中Java的虚拟机JVM。

四、Linux kernel(Linux 内核层)

Android 的核心系统服务依赖于Linux 2.6 内核,操作系统为Android提供的服务包括:

  1. 安全性(Security)。
  2. 内存管理(Memory Management)
  3. 进程管理(Process Management)
  4. 网络堆栈(Network Stack)
  5. 驱动程序模型(Driver Model)包含以下这些常规的驱动程序:
    (1)Display Driver
    (2)Keypad Driver
    (3)Camera Driver
    (4)WiFi Driver
    (5)Flash Memory Driver
    (6)Audio Driver
    (7)Binder(IPC) Driver
    (8)Power Management
    对android的整体框架有一定的了解后对与理解android的一些机制和应用开发有很大的帮助,只有了解了
    android框架才能更好的使用android提供的功能和服务。从而使学习android应用开发少走弯路。

1.6. Android View的继承关系图

在这里插入图片描述

标签:教程,程序,应用程序,Android,SDK,框架结构,数字证书,android
来源: https://blog.csdn.net/makyan/article/details/89081464

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有