Android 基础知识

adb 命令

  • adb install 路径
    安装apk
  • adb devices
    显示当前连接设备
  • adb shell dumpsys activity top
    获取顶层活动activity信息
  • adb shell dumpsys 包名
    获取包相关信息
  • abd shell dumpsys meminfo 包名/pid
    获取内存数据
  • abd shell dumpsys dbinfo
    获取数据库相关文件
  • adb shell pm list packages
    列出已安装的所有程序包
  • adb shell pm path 包名
    输出指定包的路径

apk安装过程

  • 将apk复制到data/app文件夹下并且解压并扫描安装包
  • 将dex文件复制到data/dalvik-cache 目录下
  • 在data/data目录下创建对应的应用数据目录

apk卸载过程

将安装过程创建的东西依次删除

关于卸载比删除快的原因

安装是一个解压扫描并且往硬盘写入数据的过程,而卸载只需要将指定硬盘内存区域标识为可以填充数据,并不会将刚刚使用的硬盘区域全部写为0。这也是文件可以恢复的一个原因。

关于ODEX文件

将apk中的dex文件使用dex优化过程,将其优化为一个.odex文件单独存放,这样可以提高app打开的速度,减少对ARM的占用(否则系统每次都要从apk中提取dex文件)。

三种虚拟机

java虚拟机

java虚拟机是运行java字节码,java程序编译后生成的Java字节码保存在class文件中,java虚拟机通过解码class文件来运行程序。
java虚拟机基于栈结构,虚拟机需要频繁的从栈上读写数据,需要更多的指令分派与内存访问次数,这个过程耗费较多的cpu时间。

dalvik虚拟机

基于jit机制(just in time 即时编译技术)主要用于Android 5.0 以下。dalvik虚拟机运行dalvik字节码,dalvik字节码由java字节码转化而来,并且打包到一个DEX文件中。
java编译后形成class文件并压缩为jar包,jar包的所有类共用同一个常量池,进一步压缩形成dex文件。
dalvik虚拟机基于寄存器架构,数据的访问通过寄存器直接访问。
.dex文件被工具dexopt优化后生成.odex文件,dalvik直接加载执行该文件。

art虚拟机

基于aot机制(ahead of time 预编译技术)运行本地机器码。
dex文件被工具dex2oat优化后生成oat文件,art虚拟机加载执行oat文件。

Android 基础知识

上一篇:使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知


下一篇:苹果Mac Mission Control是什么?怎么使用?