
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
研究dalvik线程创建,只因为想搞清楚dalvik函数执行流程,那么这个流程的开端在哪里呢?我想到了线程,因为每个线程都有自己的Runnable,而这个入口一定就是Runnable开始执行的地方。带着这个疑问,我展开了一系列研究。首先,Thread开始执行时,要调用Thread.start(),如下public synchronized void start() {VMThread.cr
在写这篇文章之前首先提几个问题,try catch的时候虚拟机到底做了些什么,Thread的UncaughtExceptionHandler是怎么回事?jni函数的异常是如何抛出的,又是如何被虚拟机捕获的?我们以抛出一个异常为入口,来分析Dalvik虚拟机的异常处理机制,由于throw是关键字,执行时肯定为字节码,所以我们需要到虚拟机的解释器中查看,如果对解释器不太了解的话可以参考我之前的文章:
这两年Android热修复是个挺时髦的东西,基本分为两派,一个是Hook虚拟机的,一个是Hook ClassLoader的。本文就来聊聊这两类方案,算是我自己的理解了。先说说Hook虚拟机的,这个技术源于国外的Xposed,又被阿里发扬光大,总体来说是个逼格很高的技术。将Java的函数在虚拟机层面改成一个Native函数,之后这个函数的走向就完全由我们来控制了,我们可以将其指向一个我们精心设计的N
Dalvik虚拟机函数执行有以下几种方式:interpreted 调用 interpretedinterpreted 调用 nativenative 调用 interpretednative 调用 native反射调用 interpreted反射调用 native本章主要分析反射调用。新建一个工程如下: public class MainActivity extends Activit