稀酷客

 找回密码
 加入稀酷客

只需一步,快速开始

只需一步,快速开始

[电子资料] 《深入解析Android虚拟机》.(张子言).[PDF]@ckook

[推广链接]
立即下载
by : ox9uq4 | QQ | 发表于 2017-12-22 12:54:40 | 查看: 568|回复: 0
《深入解析Android虚拟机》.(张子言).[PDF]@ckook Android
《深入解析Android虚拟机》(作者张子言)循序渐进地讲解了Android虚拟机技术的基本知识,内容新颖、知识全面、讲解详细。《深入解析Android虚拟机》分为13个章节,分别讲解了Android系统的基础知识、Android系统的结构和核心框架、Java虚拟机和Dalvik虚拟机的知识、实现程序编译和调试、Dalvik的运作流程、DEX优化和安全管理、Android虚拟机生命周期管理和内存分配策略、虚拟机垃圾收集和线程管理、JNI的基本原理、JIT编译的基本过程和具体方法,以及虚拟机中的异常管理机制方面的知识。
《深入解析Android虚拟机》定位于Android的初、中级用户,既可以作为初学者的参考书,也可以作为有一定基础的读者的拔高书。
目录
《深入解析Android虚拟机》
第1章 Android系统介绍
1.1 Android是一款智能手机
1.1.1 什么是智能手机
1.1.2 当前主流的智能手机系统
1.2 Android的巨大优势
1.3 在电脑上启动Android虚拟机
1.3.1 安装AndroidSDK
1.3.2 安装JDK、Eclipse、AndroidSDK
1.3.3 设定Android SDK Home
1.4 Android模拟器
1.4.1 Android模拟器简介
1.4.2 模拟器和仿真机究竟有何区别
1.4.3 创建Android虚拟设备(AVD)
1.4.4 模拟器的总结
1.5 搭建环境过程中的常见问题
1.5.1 不能在线更新
1.5.2 显示“Project name must be specified”提示
1.5.3 Target列表中没有Target选项
第2章 Android系统的结构
2.1 Android安装文件简介
2.1.1 AndroidSDK目录结构
2.1.2 android.jar及内部结构
2.1.3 SDK帮助文档
2.1.4 解析AndroidSDK实例
2.2 分析Android的系统架构
2.2.1 Android体系结构介绍
2.2.2 Android工程文件结构
2.2.3 应用程序的生命周期
2.3 简析Android内核
2.3.1 Android继承于Linux
2.3.2 Android内核和Linux内核的区别
2.4 简析Android源码
2.4.1 获取并编译Android源码
2.4.2 Android对Linux的改造
2.4.3 为Android构建Linux的操作系统
2.4.4 分析Android源码结构
2.4.5 编译Android源码
2.4.6 运行Android源码
2.5 实践演练——演示两种编译Android程序的方法
2.5.1 编译NativeC的helloworld模块
2.5.2 手工编译C模块
第3章 虚拟机概述
3.1 虚拟机的作用
3.2 Java虚拟机
3.2.1 理解Java虚拟机
3.2.2 Java虚拟机的数据类型
3.2.3 Java虚拟机的体系结构
3.2.4 Java虚拟机的生命周期
3.3 Android虚拟机-DalvikVM
3.3.1 Dalvik架构
3.3.2 和Java虚拟机的差异
3.3.3 DalvikVM的主要特征
3.3.4 DalvikVM的代码结构
3.4 Dalvik控制VM详解
3.5 DalvikVM架构
3.5.1 Dalvik的进程管理
3.5.2 Android的初始化流程
第4章 编译和调试
4.1 Windows环境编译Dalvik
4.2 GDB调试Dalvik
4.2.1 准备工作
4.2.2 GDB调试C程序
4.2.3 GDB调试Dalvik
4.3 使用dexdump
4.3.1 dexdump的反编译功能
4.3.2 使用dexdump查看jar文件
4.4 Dalvik虚拟机编译脚本
4.4.1 Android.mk文件
4.4.2 ReconfigureDvm.mk文件
4.4.3 dvm.mk文件
4.5 Android4.0.1 源码下载、模拟器编译和运行
第5章 Dalvik虚拟机的运作流程
5.1 Dalvik虚拟机相关的可执行程序
5.1.1 dalvikvm
5.1.2 dvz
5.1.3 app_process
5.2 Dalvik虚拟机的初始化
5.2.1 开始虚拟机的准备工作
5.2.2 初始化跟踪显示系统
5.2.3 初始化垃圾回收器
5.2.4 初始化线程列表和主线程环境参数
5.2.5 分配内部操作方法的表格内存
5.2.6 初始化虚拟机的指令码相关的内容
5.2.7 分配指令寄存器状态的内存
5.2.8 分配指令寄存器状态的内存
5.2.9 初始化虚拟机最基本用的Java库
5.2.10 进一步使用的Java类库线程类
5.2.11 初始化虚拟机使用的异常Java类库
5.2.12 释放字符串哈希表
5.2.13 初始化本地方法库的表
5.2.14 初始化内部本地方法
5.2.15 初始化JNI调用表
5.2.16 缓存Java类库里的反射类
5.2.17 最后的工作
5.3 启动zygote
5.3.1 在init.rc中配置zygote启动参数
5.3.2 启动Socket服务端口
5.3.3 加载preload-classes
5.3.4 i口载preload-resources
5.3.5 使用folk启动新进程
5.4 启动SystemServer进程
5.4.1 启动各种系统服务线程
5.4.2 启动第一个Activity
5.5 class类文件的加载
5.5.1 DexFile在内存中的映射
5.5.2 ClassObject-Class在加载后的表现形式
5.5.3 findClassNolnit-加载Class并生成相应ClassObject的函数
5.5.4 加载基本类库文件
5.5.5 加载用户类文件
5.6 解释执行类
5.6.1 Dalvik虚拟机字节码和JVM字节码的区别
5.6.2 Davik虚拟机的解释器优化
第6章 dex的优化和安全管理
6.1 Androiddex文件优化简介
6.2 dex文件的格式
6.2.1 map_list
6.2.2 string_idjtem
6.2.3 type_idjtem
6.2.4 proto_idjtem
6.2.5 field_id_item
6.2.6 method_id_item
6.2.7 class_def_item
6.3 dex文件结构
6.3.1 文件头(FileHeader)
6.3.2 魔数字段
6.3.3 检验码字段
6.3.4 SHA-l签名字段
6.3.5 map_off字段
6.3.6 stnng ids size和off字段
6.4 Android的DexFile接口
6.4.1 构造函数
6.4.2 公共方法
6.5 Dex和动态加载类机制
6.5.1 类加载机制
6.5.2 Dalvik虚拟机类加载机制
6.5.3 具体的实际操作
6.5.4代码加密
6.6 Android动态加载jar和DEX
6.6.1 Android的动态加载
6.6.2 演练动态加载
6.7 dex文件的再优化
第7章 生命周期管理
7.1 Android程序的生命周期
7.1.1 进程和线程
7.1.2 进程的类型
7.2 Activity的生命周期
7.2.1 Activity的几种状态
7.2.2 分解剖析Activity
7.2.3 几个典型的场景
7.2.4 管理Activity的生命周期
7.2.5 Activity的实例化与启动
7.2.6 Activity的暂停与继续
7.2.7 Activity的关闭/消毁与重新运行
7.2.8 Activity的启动模式
7.3 Android进程与线程
7.3.1 进程
7.3.2线程
7.3.3 线程安全的方法
7.4 测试生命周期
7.5 Service的生命周期
7.5.1 Service的基本概念和用途
7.5.2 Service的生命周期详解
7.5.3 Service与Activity通信
7.6 Android广播的生命周期
7.7 Dalvik的进程管理
7.7.1 Zygote
7.7.2 Dalvik的进程模型
7.7.3 Dalvik虚拟机的进程通信
第8章 内存分配策略
8.1 Java的内存分配管理
8.1.1 内存分配中的栈和堆
8.1.2 堆和栈的合作
8.2 运行时的数据区域
8.2.1 程序计数器(Program Counter Register)
8.2.2 Java的虚拟机栈VM Stack
8.2.3 本地方法栈Native Method Stack
8.2.4 Java堆(Java Heap)
8.2.5 方法区区
8.2.6 运行时常量池
8.2.7 直接内存
8.3 对象访问
8.3.1 对象访问基础
8.3.2 具体测试
8.4 内行泄漏
8.4.1 内存泄漏的分类
8.4.2 内存泄漏的定义
8.4.3 内存泄漏的常见问题和后果
8.4.4 检测内存泄漏
8.5 Davlik虚拟机的内存分配
8.6 分析Dalvik虚拟机的内存管理机制源码
8.6.1 表示堆的结构体
8.6.2 表示位图堆的结构体数据
8.6.3 HeapSource结构体
8.6.4 和markbits相关的结构体
8.6.5 结构体GcHeap
8.6.6 初始化垃圾回收器
8.6.7 初始化和Heap相关的信息
8.6.8 创建GcHeap
8.6.9追踪位置
8.6.10 实现空间分配
8.6.11 其他模块
8.7 优化Dalvik虚拟机的堆内存分配
8.8 查看Android内存泄漏的工具——MAT
第9章 垃圾收集
9.1 初探Java虚拟机中的垃圾收集
9.1.1 何谓垃圾收集
9.1.2 常见的垃圾收集策略
9.1.3 Java虚拟机的垃圾收集策略
9.2 Java虚拟机垃圾收集的算法
9.2.1 “标记-清除”算法
9.2.2 复制算法
9.2.3 标记-整理算法
9.2.4 分代收集算法
9.3 垃圾收集据
9.3.1 Serial收集器
9.3.2 ParNew收集器
9.3.3 Parallel Scavenge收集器
9.3.4 Serial Old收集器
9.3.5 Parallel Old收集器
9.3.6 CMS收集器
9.3.7 G1收集器
9.3.8 垃圾收集器参数总结
9.4 Android中的垃圾回收
9.4.1 sp和wp简析
9.4.2详解智能指针(android refbase类(sp和wp))
9.5 Dalvik垃圾收集的三种算法
9.5.1 引用计数
9.5.2 Mark Sweep算法
9.5.3 和垃圾收集算法有关的函数
9.5.4 在什么时候进行垃圾回收
9.5.5 调试信息
9.6 Dalvik虚拟机和Java虚拟机垃圾收集机制的区别
第10章 线程管理
10.1 Java中的线程机制
10.1.1 Java的多线程
10.1.2线程的实现
10.1.3 线程调度
10.1.4 线程状态间的转换
10.1.5 线程安全
10.1.6 线程安全的实现方法
10.1.7 无状态类
10.2 Android的线程模型
10.2.1 Android的单线程模型
10.2.2 Message Queue
10.2.3 AsyncTask
10.3 分析Android的进程通信机制
10.3.1 Android的进程间通信(1PC)机制Binder
10.3.2 ServiceManager是Binder机制的上下文管理者
10.3.3 分析Server和Client获得ServiceManager的过程
第11章 JN.接口
11.1 JNI技术基础
11.1.1 JNI概述
11.1.2 JNI带来了什么
II.I.3 JNI的结构
11.1.4 JNI的实现方式
11.1.5 JNI的代码实现和调用
11.2 JNI技术的功能
11.2.1 解决性能问题
11.2.2 解决本机平台接口调用问题
11.2.3 嵌入式开发应用
11.3 在Android中使用JNI
11.3.1 使用JNI的流程
11.3.2 使用JNI技术来进行二次封装
11.3.3 Android JNI使用的数据结构JNINativeMethod
11.3.4 通过JNI实现Java对C/C++函数的调用
11.3.5 调用Native(本地)方法传递参数并且返回结果
11.3.6 使用JNI调用C/C++开发的共享库
11.3.7 使用线程及回调更新UI
11.3.8 使用JNI实现Java与C之间传递数据
11.4 Dalvik虚拟机的JNI测试函数
11.5 总结Android中JNI编程的一些技巧
11.5.1 传递Java的基本类型
11.5.2 传递String参数
11.5.3 传递数组类型
11.5.4 二维数组和String数组
第12章 JIT编译
12.1 JIT简介
12.1.1 JIT概述
12.1.2 Java虚拟机主要的优化技术
12.1.3 Dalvik虚拟机中JIT的实现
12.2 Dalvik虚拟机对JIT的支持
12.3 汇编代码和改动
12.3.1 汇编部分代码
12.3.2 对C文件的改动
12.4 Dalvik虚拟机中的源码分析
12.4.1 入口文件
12.4.2 核心函数
12.4.3 编译文件
12.4.4 BasicBlock处理
12.4.5 内存初始化
12.4.6 对JIT源码的总结
第13章 异常管理
13.1 Java中的异常处理
13.1.1 认识异常
13.1.2 Java的异常处理机制
13.1.3 Java提供的异常处理类
13.2 处理Java异常的方式
13.2.1 使用trycatch处理异常
13.2.2 在异常中使用finally关键字
13.2.3 访问异常信息
13.2.4 抛出异常
13.2.5 自定义异常
13.2.6 Java异常处理语句的规则
13.3 Java虚拟机的异常处理机制
13.3.1 Java异常处理机制基础
13.3.2 COSIX虚拟机异常处理的设计与实现
13.4 分析Dalvik虚拟机异常处理的源码
13.4.1 初始化虚拟机使用的异常Java类库
13.4.2 抛山一个线程异常
13.4.3 持续抛出进程
13.4.4 抛山异常名
13.4.5 找山异常的原因
13.4.6 清除扑起的异常和等待初始化的开常
13.4.7 包装“现在等待”异常的不同例外
13.4.8 输出跟踪当前异常的错误信息
13.4.9 搜索和当前异常相匹配的方法
13.4.10 获取匹配的捕获块
13.4.11 进行堆栈跟踪
13.4.12 生成堆栈跟踪元素
13.4.13 将内容添加到堆栈跟踪日志中
13.4.14 打印输出为堆栈跟踪信息

立即下载( 2499.zip ) 百度网盘

解压密码:已隐藏见下(↓)

2二维码

【拿出手机】->【解锁】->【打开微信】->【扫描左侧<-的二维码】->【关注稀酷客的微信】->【发送帖子的tid号】->【获得密匙】->【将密匙填到下面的框框中】->【提交】->【免币查看隐藏内容】  如何下载?(图文教程)    如何获取酷币?

该帖tid为: 2499   或者支付2酷币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入稀酷客   

本版积分规则

点击这里给我发消息 |Archiver|手机版|小黑屋|稀酷客 ( 冀ICP备14004526号-1 )

GMT+8, 2018-6-20 13:18 , Processed in 1.140633 second(s), 37 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表