Android:插件化

作者: 我在等你回复可你没回 | 来源:发表于2018-08-17 11:57 被阅读49次

插件化组件化

组件化与插件化的区别

组件化是Android自然提供的,例如分成lib,test组件。插件化是热更新。


组件化

如何拦截Activity的启动

hook住单例的IActivity对象,拦截他的startActivity方法。
参考:https://www.jianshu.com/p/69bfbda302df

应用总共有多少个context?

context总数是Activity+service+Application的数目。

Activity的Context是什么时候赋值的?

在performLaunchActivity的时候,在创建了contextimpl,用classloader把Activity对象创建出来后,调用Activity的attach方法实现赋值。


context

应用的ClassLoader是从哪里来的?

应用ActivityThread启动后,bind上AMS,AMS返回Application info,这个Application info包含apk的路径信息,应用根据这个应用信息构造classloader,这个classloader位于loadedapk对象中。

如何加载另一个apk的资源?

构造一个ResourceManager,传入apk路径。然后动态加载资源APK,从资源APK中解释出资源id。利用构造的ResourceManager,传入资源id,加载进来。

java反射有哪些方法

反射获取类
Class.forName
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");

反射获取方法
Class.getdeclaredMetod(obj)
Method currentActivityThreadMethod = activityThreadClass.getDeclaredMethod("currentActivityThread");

反射新建对象
ActivityManagerNativeClss.newInstance()

反射获取属性
Class.getdeclaredField(obj)

反射可以反射final,private吗?

可以的。可以反射pathlist的element数组来修改classloader实现插件化。

xposed是什么原理?

修改system_process,加载jar,修改Method指向。

Android虚拟机中class和method的数据结构是怎样的?

dvmDecodeIndirectRef是libdvm中的方法,它可以从java对象的间接引用获得ClassObject对象,再根据slot,用dvmSlotToMethod找到Method对象。这里的ClassObject和Method都是虚拟机内部用来表示class和Method的数据结构。

java反射的Method和虚拟机中Method是同一个吗?

不是的。
参考:https://blog.csdn.net/dingjikerbo/article/details/50448145

Art中method的结构是怎样的?

jni函数表保存在全局变量gJniNativeInterface中

const JNINativeInterface gJniNativeInterface = {
  NULL,  // reserved0.
  NULL,  // reserved1.
  NULL,  // reserved2.
  NULL,  // reserved3.
  JNI::GetVersion,
  ......
  JNI::FindClass,
  ......
  JNI::GetStaticMethodID,
  ......
  JNI::CallStaticVoidMethod,
  ......
};

首先需要先查找类
class_linker->FindClass(descriptor.c_str(), cl)

然后加载class,在加载class的时候,就加载方法了。
ClassLinker.LoadClass
LoadMethod
LoadField

然后连接native代码
LinkCode

https://blog.csdn.net/luoshengyang/article/details/39533503

DEX类和OAT类的有区别吗?

virtual方法是什么

virtual方法就是public,protect方法,有多态。derect方法就是private方法。

相关文章

网友评论

    本文标题:Android:插件化

    本文链接:https://www.haomeiwen.com/subject/xxgmbftx.html