https://blog.csdn.net/io_field/article/details/79084630

可以通过反射 事先定义统一接口的方式,访问插件中的类和方法

还可以在AndroidManifest.xml中动态注册组件Activity、Service、BroadcastReceiver、ContentProvider(DroidPlugin实现) https://www.jianshu.com/p/e61a4d10e122

插件化的原理无非就是这些:

  1. 通过DexClassLoader加载。
  2. 代理模式添加生命周期(在代理Activity的生命周期函数中,调用插件中Activity实现的生命周期函数)。 https://www.jianshu.com/p/7b2cc534d097
  3. Hook思想跳过清单验证。https://www.jianshu.com/p/69bfbda302df---Hook技术之Activity的启动过程拦截

在2017年至今各大公司推出的插件化技术越来越成熟,发展到了顶峰,井喷了许多高质量的插件化框架,以应对大型App的开发。但是时不凑巧 2018年,Google官方祭出了大杀器 -- 禁止调用私有API(经过@hide修饰的方法),也意味着赖以生存的插件化技术走向了终结。

Hook技术绕开Android P 系统限制

Google为了不让开发者调用经@hide注解修饰的系统api,可谓下了非常大的功夫。不过上有政策,下有对策。经过360技术团队与动脑学院研发团队的联合攻克下,可以将app某个单独的类伪装成系统类。会让Android系统误认为是自己调用隐藏的API;大家都知道系统是可以调用隐藏的方法的。

这如何做到呢?

在类加载机制分析中,我们可以发现,系统的Class是被BootStrapClassLoader加载的,BootStrapClassLoader也称为系统类加载器 应用层经过反射调用系统的Api最终会调用BootStrapClassLoader的加载类的方法。

那我们能否将我们apk中定义的某个工具类的ClassLoader变成BootStrapClassLoader呢?如果能实现那该怎样才能使工具类能够正常调用经@hide注解修饰的系统api。  答案是肯定可以的!

Android插件化技术简介的更多相关文章

  1. Android 插件化技术窥探

    在Android 插件化技术中(宿主app和插件app设置相同的sharedUserId),动态加载apk有两种方式: 一种是将资源主题包的apk安装到手机上再读取apk内的资源,这种方式的原理是将宿 ...

  2. Android插件化技术——原理篇

    <Android插件化技术——原理篇>     转载:https://mp.weixin.qq.com/s/Uwr6Rimc7Gpnq4wMFZSAag?utm_source=androi ...

  3. 深入理解Android插件化技术

    深入理解Android插件化技术  转 https://zhuanlan.zhihu.com/p/33017826 插件化技术可以说是Android高级工程师所必须具备的技能之一,从2012年插件化概 ...

  4. 包建强的培训课程(10):Android插件化从入门到精通

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  5. Android 插件化和热修复知识梳理

    概述 在Android开发中,插件化和热修复的话题越来越多的被大家提及,同时随着技术的迭代,各种框架的发展更新,插件化和热修复的框架似乎已经日趋成熟,许多开发者也把这两项技术运用到实际开发协作和正式的 ...

  6. 《Android插件化开发指南》面世

    本书在京东购买地址:https://item.jd.com/31178047689.html 本书Q群:389329264 (一)这是一本什么书 如果只把本书当作纯粹介绍Android插件化技术的书籍 ...

  7. 自己动手写Android插件化框架,让老板对你刮目相看

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由达文西发表于云+社区专栏 最近在工作中接触到了Android插件内的开发,发现自己这种技术还缺乏最基本的了解,以至于在一些基本问题上浪 ...

  8. android插件化简述

    2015年是Android插件化技术突飞猛进的一年,随着业务的发展各大厂商都碰到了Android Native平台的瓶颈: 从技术上讲,业务逻辑的复杂导致代码量急剧膨胀,各大厂商陆续出到65535方法 ...

  9. 自己动手写Android插件化框架

    自己动手写Android插件化框架 转 http://www.imooc.com/article/details/id/252238   最近在工作中接触到了Android插件内的开发,发现自己这种技 ...

随机推荐

  1. JAVA设计模式初探之适配器模式

    http://blog.csdn.net/jason0539/article/details/22468457 1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接 ...

  2. HDU 1560 DNA sequence (迭代加深搜索)

    The twenty-first century is a biology-technology developing century. We know that a gene is made of ...

  3. 多文件协作,extern、static、头文件

    多个cpp文件协同工作.使用外部函数.变量时,必须先声明再使用.声明外部函数(一般在main.cpp中),extern可省略(主函数中默认可访问外部函数)extern void RectArea(); ...

  4. 转载:C++ 二维数组new

    来源:http://developer.51cto.com/art/201002/183127.htm C++编程语言中有一种叫做new的二维数组,它的应用方式比较灵活,可以有多种方法来帮助我们实现一 ...

  5. CodeForces632E 神奇的多重背包

    https://cn.vjudge.net/problem/333897/origin 万万没想到这题表面上是个多重背包,实际上确实是个多重背包 题意 n种物品每种物品有无限个,每个物品有一个价格,现 ...

  6. 基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include<stdio.h> #include<libvirt/libvirt.h> int getDomainInf ...

  7. slave have equal MySQL server UUIDs

    在部署MySQL主从复制架构的时候,碰到了"Last_IO_Error: Fatal error: The slave I/O thread stops because master and ...

  8. Oracle分析函数-rank() over(partition by...order by...)

    select *from ( SELECT t.s#,---学号 t.c#,---课程号 T.SCCORE, ---成绩 RANK() OVER(PARTITION BY t.c# ORDER BY ...

  9. 使用nvm安装node,全局npm,cnpm

    1.nvm-windows下载 下载地址https://github.com/coreybutler/nvm-windows/releases,下载nvm-setup.zip 2.安装nvm 首先把n ...

  10. HTML汇总以及CSS的一些开端

    一.HTML初探 1.HTML(HyperText Markup Language):超文本标记语言指的就是超跃了txt文件,能够在里面进行一些例如:就是指页面内可以包含图片.链接 .甚至音乐.程序等 ...