1. Android 启动
    1. 开启电源、片上ROM代码执行:与芯片手册有关
    2. 启动加载程序
      1. 初始程序加载IPL:负责监测和建立外部RAM
      2. 第二阶段程序加载SPL:负责加载Android操作系统、Recovery等
    3. Linux内核
    4. init进程
      1. 处理init脚本
      2. 与Linux的/etc/init.d类似,位于根目录
      3. HTC Incredible Android 2.2 有650行
    5. Zygote和Dalvik
    6. 系统服务器
    7. 启动完成
  2. Android 安全模型
    1. 第一次安装时,通过检查能够识别开发者的数字签名检查.apk文件
    2. .apk文件验证后,检查权限列表
    3. 每个应用程序赋予唯一的用户ID和用户组,运行在自己的进程和Dalvik虚拟机里
    4. 每个应用专有目录,唯自己可访问
  3. Android 文件系统与数据结构
    1. 内部存储器,只能位于/data/data/子目录下
    2. 外部存储器,可在任意位置存储
      1. 为实现SD卡接入,SD卡常按照FAT32格式格式化
      2. 缺少细化的安全机制
    3. /data/data/<软件包名称>子目录
      1. shared_prefs:共享优先
        1. 将基础数据类型的变量定义-数值位元组以XML形式储存
        2. 支持boolean/float/int/long/string
      2. lib:应用程序所需的自定义库文件
      3. files:文件
      4. cache:缓存
      5. databases:SQLite数据库和日志文件
    4. 日志
      1. dmseg
        1. adb shell dmesg:Linux内核日志
        2. 不需要root,打开USB调试即可
      2. logcat
        1. adb shell logcat:系统和应用程序调试信息
        2. 不需root
      3. dumpsys
        1. adb shell dumpsys:服务、存储、系统其他方面细节信息
        2. 不需要root
        3. Device ID不是终端设备序号,而是MEID,用以在CDMA网络中唯一地识别设备
      4. dumpstate
        1. adb shell dumpstate:将前述调试信息结合
        2. 部分需root权限
      5. bugreport
        1. adb bugreport > bugreport.log:将logcat/dumpsys/dumpstate输出
    5. 内存
      1. Android提供了将应用程序所用内存转存在文件的机制
    6. NAND Flash
      1. NAND Flash出场时就存在废块
      2. 将检测出的废块标识出来
      3. NAND Flash操作
        1. 读(页、512~2048B)
        2. 写(页、512~2048B)
        3. 擦除(块、64*2KB=128KB)
          1. 整块全写1
          2. 唯一将0变1的机制
      4. 术语NAND Flash不带控制器
        1. U盘、SSD包括NAND Flash和控制器,由控制器完成废块管理、损耗度度量
        2. 若无eMMC,Android由软件控制NAND Flash,具体为Yaffs
        3. 使用寿命上讲,Yaffs比eMMC好
      5. 用ECC检测错误,当操作错误超过阀值时,将页或块标为不可用,写入废块表
    7. 文件系统
      1. 第一个使用EXT4的Android设备是Nexus S
      2. 采用eMMC后不需要Yaffs了
      3. 目录结构
        1. /data/app 包含从Android市场下载的.apk文件
        2. /data/dalvik-cache 保存了各app的dex文件
        3. /data/data 保存个app专用数据
        4. /data/local 专门留给shell使用,安装程序中转什么的
        5. /mnt/sdcard/secure/asec 是加密的,保存驻留SD卡的应用程序数据
        6. /system/app 保存系统apk和odex文件
        7. /system/bin 和 /system/xbin 包含系统使用的二进制文件
        8. /system/etc 保存配置
      4. Move to SD Card功能就是把apk从/data/app移动到/mnt/secure/asec,用户数据仍位于/data/data