自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 热修复Java探索之Dalvik生成odex时类校验的权限检查

一个dex加载到native内存的时候,如果不存在odex文件会首先执行dexopt的入口在dalvik/dexopt/OptMain.cpp的main方法。这里主要分析在生成odex过程中的权限校验和对热修复的影响。/dalvik/dexopt/OptMain.cppmain(int argc, char* const argv[])fromDex/dalvik/vm/analysi...

2018-05-11 15:59:39 626

原创 热修复Java探索之泛型编译

public class GenericFoo<T> { private T foo; public void setFoo(T foo){ this.foo=foo; } public T getFoo(){ return foo; } //public void setFoo(Object foo)...

2018-05-10 18:01:16 267

原创 热修复Java探索之switch case编译

switch case在编译存在特殊性,例如:public class Demo { public void testContinue() { int temp = 2; int result = 0; switch (temp) { case 1: result = 1; ...

2018-05-10 14:12:21 493

原创 java生成smali

SmaliSmali是Android系统中Dalvik虚拟机指令语言java代码转smali代码第一步:生成class文件javac Demo.class第二步:class转成dex文件,android-sdk\build-tools\xx.xx.xx\lib下提供了dx工具。java -jar dx.jar --dex --output=Demo.dex Demo.c...

2018-05-10 12:28:10 1241

原创 热修复Java探索之final static域编译

先看个例子:public class Demo{ static Temp t1 = new Temp(); final static Temp t2 = new Temp(); static String s1 = new String("heihei"); final static String s2 = "haha"; static int i1 = 1; final ...

2018-05-09 19:11:38 294

原创 热修复Java探索之域编译

先看一个例子:public class Demo{ { i = 2; } private int i = 1; private static int j = 1; static{ j = 2; }}编译器处理可以理解下面的情形:public class Demo{ //类初始化调用,只会调用一次 void static constructor <c...

2018-05-09 17:45:14 190

原创 热修复Java探索之内部类编译

Java内部类有静态内部类、非静态内部类和匿名内部类,需要明确的是所有的内部类都会被编译成和外部类一样的顶级类。静态内部类/非静态内部类 静态内部类和非静态内部类的区别就是非静态内部类持有外部类的引用。编译期间会自动合成this$0表示外部类引用。 非静态内部类和外部类互相访问: 在使用非静态内部类时,我们都知道外部类可以访问内部类的私有成员变量,反之亦然。上面已经说过,内部同样会编...

2018-05-09 16:41:44 326

原创 代码热修复基本思想和固有限制

代码热修复是基于native的修复,基本原理就是替换java Method对应的ArtMethod指针,比如阿里的Andfix和Sophix。AndfixAndfix采用的方法是在已经加载的类中,直接在native层替换原有方法。核心在于replaceMethod,这是一个native方法,参数是反射得到的Method对象对一个的jobject。private static nativ...

2018-05-09 15:12:08 295

原创 虚拟机调用方法之ArtMethod

2018-05-09 12:40:06 4304

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除