1、Android 热修复与插件化

1、class&dex文件详解

1)class文件结构深入解析(生成、执行、文件结构)

1.什么是class文件

能够被jvm识别、加载并执行的文件格式。

除了java语言其他语言也可以生成class文件,如图:

1、Android 热修复与插件化_第1张图片

2.生成class文件

1.通过IDE自动帮我们build

2.手动通过javac命令去生成class文件

3.通过java命令去执行class文件

3.class文件作用

记录一个类文件的所有信息

4.class文件结构

1)一种8位字节的二进制流文件

2)各个数据按顺序紧密的排列,无间隙

3)每个类或接口都单独占据一个class文件
5、class文件弊端

1)内存占用大,不适合移动端

2)堆栈的加载模式,加载速度慢

3)文件IO操作多,类查找慢

2)dex文件结构深入解析(生成、执行、文件结构)

1.什么是dex文件

能够被DVM识别,加载并执行的文件格式

2.class文件结构

1)一种8位字节的二进制流文件

2)各个数据按顺序紧密的排列,无间隙

3)整个应用中所有java源文件都放在一个dex中

3)class与dex文件对比

1.本质上他们都是一样的,dex是从class文件演变而来的

2.class文件存在许多冗余信息,dex回去出冗余,并整合

2、虚拟机详解

1.Java虚拟机结构解析

1)jvm整体结构讲解

1、Android 热修复与插件化_第2张图片

2)java代码的编译和执行过程 

 1、Android 热修复与插件化_第3张图片

 1、Android 热修复与插件化_第4张图片

 1、Android 热修复与插件化_第5张图片

 1、Android 热修复与插件化_第6张图片

3)内存管理和垃圾回收

1、Android 热修复与插件化_第7张图片

1、Android 热修复与插件化_第8张图片1、Android 热修复与插件化_第9张图片

2. Dalvik与JVM的不同

1、Android 热修复与插件化_第10张图片

3.ART比Dalvik有哪些优势

1、Android 热修复与插件化_第11张图片

一、热修复

比如阿里的优酷和支付宝,腾讯的微信都有使用热修复

1、热修复解决的问题

1)应用刚上线就发现了bug

2)一些小的功能想即时推送给用户

二、插件化

比如美团、淘宝、和酷狗

1、插件化解决的问题

1)应用越来越大带来的各种技术限制和合作开发问题

2、使用热修复不会改变应用的结构,使用插件化会改变应用的结构

1、Android 热修复与插件化_第12张图片

1.插件化介绍

出现背景

1.apk体积越来越大,功能模块越来越多

2.模块耦合度高,协同开发成本大

3.方法数可能超过65535,占用内存过大

如何解决

1,将一个大的apk按照业务分隔成多个小的apk

2. 每个小的apk即可以独立运行又可以作为插件运行

1、Android 热修复与插件化_第13张图片

 1、Android 热修复与插件化_第14张图片

 1、Android 热修复与插件化_第15张图片

 1、Android 热修复与插件化_第16张图片

 

2.插件化原理

1、Android 热修复与插件化_第17张图片

 

1、Android 热修复与插件化_第18张图片

 1、Android 热修复与插件化_第19张图片

Atlas框架

1、Android 热修复与插件化_第20张图片

 

你可能感兴趣的:(Adroid面试题,android)