Android的系统架构

四层架构 五层架构
Android基础01:快速入门 Android基础01:快速入门
  • Linux内核层
    – 避免了与硬件直接打交道
    – 基于Linux系统的驱动开发可扩展性很强
  • 硬件抽象层
    – 通过定义硬件“驱动”的接口来进一步降低Android系统与硬件的耦合度
    – 由于Linux遵循的是GPL协议,而Android开源项目是基于Apache协议,意味着其下的所有驱动都应该开源,这一点对于部分厂商来说无法接受
  • 系统运行层
    包含了支持整个系统正常运行的基础库,由于这些库多数都由C/C++实现,因此也被一些开发人员定义为"C层库",以区别应用程序框架层
  • 应用程序框架层
    系统运行库被称为“C库层”相对应,应用程序框架层往往被冠以“JAVA库”的称号。这是因为框架层所提供的组件一般都是以JAVA语言编写而成,他一方面为上层应用程序提供了API接口;另一方面也囊括了不少系统级服务进程的实现,是与Android应用程序开发者关系最直接的一层
  • 应用程序层

区别DVM与JVM

  • 首要差别:
    – Dalvik: 基于寄存器,编译和运行都会更快些
    – JVM: 基于栈, 编译和运行都会慢些

  • 字节码的区别:
    – Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小
    – VM: 执行.class格式的字节码

  • 运行环境的区别
    – Dalvik : 一个应用启动都运行一个单独的虚拟机运行在一个单独的进程中
    – JVM: 只能运行一个实例, 也就是所有应用都运行在同一个JVM中


搭建开发环境

  • android-sdk-windows:android软件开发包, 作用相当于JDK =jre+工具
  • eclipse:需要安装插件ADT
  • 配置环境变量PATH:path=…\sdk\platform-tools; …\sdk\tools
  • 创建并启动模拟器
参数名称 说明
AVD Name 虚拟设备名称
Device 设备型号
CPU/ABI 处理器
Keyboard 是否用硬键盘(不选用软键盘)
Skin 不同型号皮肤外形不相同
Memory Otions 内存选项设置( RAM : 设备的运行内存;VM Heap : 虚拟机堆空间内存)
Internal Storage 设备内部存储空间大小
SD Card SD卡内存的大小

项目的组成结构

Android基础01:快速入门


APK安装文件的组成结构

Android基础01:快速入门


应用编译打包过程

Android基础01:快速入门


Android系统文件目录结构

  • /:Linux系统的根目录
  • /data/app/ :存放着第三方的apk文件
  • /system/app/:其中是系统中的应用安装文件
  • /data/data/packageName/:与应用对应的文件, 在应用安装时自动生成,应用卸载时自动删除
  • /storage/sdcard/:SD卡的文件夹

SDK的文件目录

  • /docs:文档目录 index.html
  • /platforms:包含这个版本运行所需要的jar包
  • /platform-tools:包含一些开发工具, 如adb.exe, sqlite3.exe
  • /samples:包含一些google提供的样例项目工程, 如: APIDemos
  • /source:包含系统的部分源码
  • /tools:包含一些开发工具, 如: draw9patch.bat, hierarchyviewer.bat

ADB(Android Debug Bridge)

  • Android 调试桥(Android Debug Bridge)是多种用途的调试工具:可以使用USB、以太网以及WIFI来进行调试(Android系统有adbd.exe进程)
  • adb常用命令
命令 用途
adb shell 进入Linux系统中
adb install –r apkPath 向Android设备中安装APK,如果存在则先删除再安装
adb push local remote 向Android设备中拷贝文件或文件夹
adb pulllocal remote 从Android设备中拷贝文件或文件夹
ctrl+c 退出shell
cls 清屏

DDMS

  • 全称是Dalvik Debug Monitor Service
  • Android 开发环境中的Dalvik虚拟机调试监控服务
  • Eclipse中提供的Android应用开发的调试工具
  • DDMS的四个重要的视窗
    【1】Logcat : 查看日志输出
    【2】File Explorer:查看系统内部文件
    【3】Devices:显示关联的Android设备
    【4】Emulator Control:操作控制关联的Android设备
  • 注意: 在Eclipse中打开这四个视窗便于调试

日志工具类: Log

  • 为了便于开发调试, Android提供了用于日志打印输出的工具类: Log
Log类方法 级别 作用 颜色
v(tag, message) Verbose 显示全部信息 黑色
d(tag, message) Debug 显示调试信息 蓝色
i(tag, message) Info 显示一般信息 绿色
w(tag, message) Warming 显示警告信息 橙色
e(tag, message) Error 显示错误信息 红色
  • 比较Log与System.out
    – Log提供了多个级别的打印输出方法, 在LogCat窗口中显示的颜色不同
    – Log打印时必须指定TAG, 在LogCat中可以通过添加TAG过滤查看
    – LogCat中可以通过两种方式过滤:
    1. TAG名: 显示所有此标签名的输出
    2. 应用包名: 显示指定包名应用的所有输出

手机尺寸相关的概念

  • 手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm)
  • 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量×宽方向上数量来表达
  • PPI:Pixels Per Inch,手机的像素密度,即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节就越丰富
  • DPI: Dots Per Inch,每英寸所打印的点数或线数,用来表示打印机打印分辨率, 但有时也会用dpi来代指ppi
  • 手机的密度: Density, 以160ppi为基准, 即像素密度为160时Density为1,手机密度=像素密度 / 160
  • 尺寸单位
    – px: pixels(像素)
    – dp/dip: device-independent pixels(设备无关像素)
    – sp:scaled pixels(可缩放像素)
  • Android在运行时会自动将dp/dip/sp为单位的尺寸转换为像素单位的值
  • dp与px的比较:
    – 以px为单位的长度, 在差手机上会变大, 在好手机上变小
    – 以dp为单位则不会变化
    例如:两个手机A与B的手机尺寸是一样大的,也就是物理尺寸是一样大的,但是手机A的像素密度为200×200像素,手机B的像素密度为400×400像素,那么手机B的像素密度比手机A的像素密度要大。现在有一副200×200像素大小的图片同时在手机A与手机B上去显示,图片会沾满手机A的屏幕,在手机B中只会占据1/4的区域,由于手机A与手机B的物理尺寸是一样大的==>图片在手机A上显示会比手机B上显示的要大!
  • dp与sp的比较:
    – 用户可以在系统设置中设置文本的大小
    – 如果字体大小使用sp为单位, 设置有效果
    – 如果字体大小使用dp为单位, 设置没有效果
  • 在布局文件视图的宽高尽量用match_parent/wrap_content
  • 如果必须指定特定值, 使用dp/dip做单位
  • 文本大小使用sp做单位

关于颜色

  • 在Android中字体颜色或背景颜色使用RGB来表达
    – R : red 红色
    – G : green 绿色
    – B : blue 蓝色
    – 每个色相用一个2位的十六进制的数来表达
    – 颜色值的前面为带一个字符 : #
  • 例子
    – 红色: #ff0000
    – 绿色: #00ff00
    – 白色: #ffffff
    – 黑色: #000000
  • 具体需要什么颜色可以查颜色表

相关文章: