热修复
文章平均质量分 57
Android热修复
momo_ibeike
这个作者很懒,什么都没留下…
展开
-
代码热修复基本思想和固有限制
代码热修复是基于native的修复,基本原理就是替换java Method对应的ArtMethod指针,比如阿里的Andfix和Sophix。 Andfix Andfix采用的方法是在已经加载的类中,直接在native层替换原有方法。核心在于replaceMethod,这是一个native方法,参数是反射得到的Method对象对一个的jobject。 private static nativ...原创 2018-05-09 15:12:08 · 320 阅读 · 0 评论 -
热修复Java探索之内部类编译
Java内部类有静态内部类、非静态内部类和匿名内部类,需要明确的是所有的内部类都会被编译成和外部类一样的顶级类。 静态内部类/非静态内部类 静态内部类和非静态内部类的区别就是非静态内部类持有外部类的引用。编译期间会自动合成this$0表示外部类引用。 非静态内部类和外部类互相访问: 在使用非静态内部类时,我们都知道外部类可以访问内部类的私有成员变量,反之亦然。 上面已经说过,内部同样会编...原创 2018-05-09 16:41:44 · 357 阅读 · 0 评论 -
热修复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 · 212 阅读 · 0 评论 -
热修复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 · 317 阅读 · 0 评论 -
热修复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 · 536 阅读 · 0 评论 -
热修复Java探索之泛型编译
public class GenericFoo&lt;T&gt; { 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 · 287 阅读 · 0 评论