RePlugin菜鸟教程(坑概念)

  学习RePlugin就不能避免坑这个概念,现在就让我们来看看它是什么?

  小伙伴们刚学android的时候,有没有因为忘记在AndroidManifest文件中注册activity而导致程序崩溃呢?

  原因大家可能都知道,android系统启动activity前,会去AndroidManifest文件中查找是否注册了此activity。如果没有找到此activity,那么它就会报错崩溃了。

   那么我们在宿主app中去启动插件app的activity,那就有一个问题了。宿主app的AndroidManifest肯定是没有注册这个activity的。也就是宿主app不认你这个activity。程序不出意外的话,铁定崩溃了。

   这时候我们就要想一个办法,去骗过android系统的检查。

   欺骗方案:

   第一步:我们先在宿主app中埋下一定数量的坑

   第二步:当宿主app启动activity时,我们不去启动那个真实的activity的class类。而是去启动预先埋好的坑。

   第三步:android系统检查AndroidManifest时,肯定不会出错,因为我们已经埋好了坑。它会以为有这个activity,检查通过。

   第四步:android系统就会去创建这个activity的instance(java反射知识)

   第五步:这时候我们使用classLoader(类加载器)再偷天换日,将插件app的activity(那个没有写到Androidmanifest里的activity)new一个出现,返回给android系统。

    总结:坑的用途其实就是用来欺骗android系统,从而实现在宿主app中去启动插件app的activity。

猜你喜欢

转载自blog.csdn.net/qq_35159110/article/details/81503459
今日推荐