instant run
2017-01-24 14:32:06 0 举报
AI智能生成
Instant Run是Android Studio的一项功能,它允许开发者在不重新编译整个项目的情况下,实时运行和调试代码的更改。这意味着开发者可以在保存代码后立即看到更改的效果,而无需等待整个构建过程。这大大加快了开发速度,提高了效率。Instant Run通过在后台创建一个轻量级的、只包含更改的应用程序副本来实现这一目标。这使得开发者可以快速测试新功能,修复错误,并在不需要部署到设备或模拟器的情况下进行迭代。总之,Instant Run是一个强大的工具,它使Android开发变得更加快速、便捷和高效。
作者其他创作
大纲/内容
dex拆分
instant-run.zip
里的dex都是和
app代码相关的
classes2.dex
AndroidStudio编译时自己添加
最重要
IncrementalClassLoader
DelegateClassLoader是内部类,负责patch类的加载
BootstrapApplication
利用反射将
incrementalclassloader
设置成app中默认ClassLoader的父类
AbstractPatchesLoaderImpl
load方法中:遍历修改的类,为修改的类的$changef赋值
classes.dex
AndroidStudio编译时自己添加
只包含一个AppInfo类
修改代码
原始类的修改
每个方法前,都注入了一段类似逻辑
IncrementalChange localIncrementalChange = $change;
if (localIncrementalChange != null) {
bool = ((Boolean) localIncrementalChange.access$dispatch(
"onOptionsItemSelected.(Landroid/view/MenuItem;)Z",
new Object[] { this, paramMenuItem })).booleanValue();
}
有改动的类的修改
生成AppPatchesLoaderImpl类,
记录哪些类被修改了
有改动的类,生成另一个类在其类名的后面追加$override,
并实现IncrementalChange接口
0 条评论
下一页