Android指令
? 列出模拟器类型:android list target
? 创建模拟器:android create avd –taget 2 –name cupcake ,cupcak为新建模拟器的名称。 ? 列出自己创建的模拟器:
? 切换模拟器样式:在创建命令后面加上“—skin QVGA”即可,切换样式:Windows
操作系统按F7键即可。
? 删除模拟器:android delete avd –name cupcake,cupcake为删除的模拟器名称。
? 指定用什么模拟器启动:emultator –debug avd_config –avd cupcake,cupcake为模拟器的
名称
? 将apk文件安装到Android模拟器:首先启动Android模拟器,然后打开命令行对话
框,进入命令行模式。在命令行模式下进入Android SDK安装目录下面的tools文件夹,输入“adb install C:\\poker80.apk”(C:\\poker80.apk是要安装的文件的路径),这样便可以将apk文件安装到模拟器上
? 缷载模拟器中的apk文件,操作步骤为:首先启动Android模拟器,进入命令行模式,
在命令行模式下进入Android SDK安装目录下面的tools文件夹,然后在命令行处依次输入“adb shell”、“cd data”、“cd app”、“ls”(主要针对不知道包下面的文件的情况,可以用ls命令列表显示出来)、“rm com.fungsing.poker80.apk”命令(“com.fungsing.poker80.apk”是要缷载的apk包)
Android可分为四层,从高到底分别是应用层、应用框架层、系统运行库层和Linux内核层。
应用层 Home、Camara、Phone、Browser、… 应用框架层 Activity Manager、Window Manger、Content Provider、View System、Notification Manager、Package Manager、Telephone Manager、Resources Manager、Location Manager、XMPP Service Surface Manager、Media Framework、SQLite、OpengL ES、FreeType、Webkit、SGL、SSL、 Android Runtime:Core Library 系统运行层 Linux应用框架层系统运行层内核层 Home、Camara、Phone、Browser、…
# 应用层:应用是用Java语言编写的运行在虚拟机上的程序。
# 应用框架层: 这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的架构设计,但是必须遵守其框架的开发原则。
内容提供器(Content Providers):可以让一个应用访问另一个应用的数据(如联系人数据库),或共享它们自己的数据 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件(Layout file)
通知管理器(Notification Manager):应用可以在状态栏中显示自定义的提示信息。 活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航退回功能。
窗口管理器(Windows Manager):管理所有的窗口程序 包管理器(Package Manager):Android系统内的程序管理。
# 系统运行库层:当使用Android应用框架时,Android系统通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务。
Bionice系统C库:C语言标准库,系统最底层的库,Cylk通过Linux系统来调用
多媒体库(MediaFramework):Android系统多媒体库,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等 SGL:2D图形引擎库
SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持 OpenGL ES1.0: 3D效果的支持 SQLite:关系数据库
Webkit: Web浏览器引擎
FreeType:位图(bitmap)及矢量(vector)
与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行.dex的可执行文件。Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容。它们有两个明显的不同:Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式为dex( Dalvik Executable)的文件。在Java SE程序中的Java类会编译成一个或者多个字节码文件(.class)然后打包到jar文件,而后Java虚拟机会从相应的class文件和jar文件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成class文件后,还会通过一个工具(dx)将应用所有的class文件转换成一个dex文件,而后Dalvik虚拟机会从其中读取指令和数据。
Dalvik虚拟机主要特征:
1) 专有的dex 文件格式。Dex是Dalvik虚拟机专用的文件格式
a) 增加了对新的操作码的支持
b) 文件结构尽量简洁,使用等长的指令,借以提供解析速度 c) 文件扩大只读结构的大小,借以提供跨进程的数据共享。 2) dex的优化。Dex文件的结构是紧凑的,但是如果还想运行时的性能有进一步提高,
就需要对dex文件进一步优化。优化主要针对以下几个方面:
a) 调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域。 b) 验证dex文件中所有类。
c) 对一些特定的类和方法里的操作码进行优化。 3) 基于寄存器。相对于基于堆栈实现的虚拟机,基于寄存器实现的虚拟机虽然在硬件、
通用性上要差一些,但是它在代码的执行效率上却更胜一筹。
4) 一个应用,一个虚拟机实例,一个进程。每一个Android应用都运行在一个Dalvik
虚拟机实例中,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制、内存分配和管理、Mutex等的实现都依赖底层操作系统。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程高度和管理机制。不同的应用在不同的进程空间里运行,对不同来源的应用都使用不同的Linux用户来运行,可以最大限度地保护应用的安全和独立运行。
Linux内核层:Android的核心系统服务基于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。Linux内核同时也作为硬件和软件之间的抽象层。
Android更多的是需要一些与移动设备相关的驱动程序?? ? 显示驱动(Display Driver):基于Linux的帧缓冲(Frame Buffer)驱动 ? 键盘驱动(Keyboard Driver):作为输入设备的键盘驱动。 ? Flash内存驱动(Flash Memory Driver):基于MTD的Flash驱动。 ? 照相机驱动(Camera Driver):常用的基于ALSA(Advanced Linux Sound
Architecture)的高级Linux声音体系驱动。 ? 蓝牙驱动(Bluetooth Driver):基于IEEE 802.11标准的驱动程序。
? Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提
供间通信的功能。
? 电源管理(Power Management):比如电池电量等。
Android应用程序框架
Android.app: 提供高层的程序模型和基本的运行环境 Android.content: 包含对各种设备上的数据进行访问和发布。 Android.database: 通过内容提供者浏览和操作数据库
Android.graphics: 底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上
Android.location: 定位和相关服务的类 Android.media: 提供一些类管理多种音频、视频的媒体接口。 Android.net: 提供帮助网络访问的类,超过通过的java.net.*接口。 Android.os: 提供了系统服务、消息传输和IPC机制。 Android.opengl: 提供OpengGL的工具。 Android.provider: 提供访问Android内容提供者的类 Android.telephone: 提供与拨打电话相关的API交互。 Android.view: 提供基础的用户界面接口框架 Android.util: 涉及工具性的方法,例如时间日期的操作 Android.webkit: 默认浏览器操作接口 Android.widget: 包含各种UI元素(大部分是可见的)在应用程序的布局中使用。
OMS是Open Mobile System的简称,即面向移动互联网的开发型移动智能终端软件平台,它包括基于Linux2.6内核的移动终端下层操作系统、上层应用软件、中间件、Java虚拟机、硬件参考设计以及基于Webkit的各类应用。Widget应用是OMS的精华,Android从1.5版本开始同样支持Widget应用开发,Widget应用采用 JIL(Joint Innovation Lab)。JIL Widget是采用HTML、JavaScript和CSS等网络技术的应用程序。

