Android插件化技术简介
https://blog.csdn.net/io_field/article/details/79084630
可以通过反射 事先定义统一接口的方式,访问插件中的类和方法
还可以在AndroidManifest.xml中动态注册组件Activity、Service、BroadcastReceiver、ContentProvider(DroidPlugin实现) https://www.jianshu.com/p/e61a4d10e122
插件化的原理无非就是这些:
- 通过DexClassLoader加载。
- 代理模式添加生命周期(在代理Activity的生命周期函数中,调用插件中Activity实现的生命周期函数)。 https://www.jianshu.com/p/7b2cc534d097
- 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。 答案是肯定可以的!
最新文章
- sharepoint
- c#使用正则表达式抓取a标签的链接和innerhtml
- 登录框密码框input框禁止复制、粘贴、剪切和右键功能
- block反向界面传值
- Selenium自动化测试问题
- python——初识socket
- NGUI之UIRoot屏幕分辨率自适应
- Android 一键直接查看Sqlite数据库数据
- jQuery中的&;&; ||
- 解决安装SQL Server2008失败的问题
- Tomcat绑定多个IP地址 多域名绑定
- Qt入门(13)——Qt的调用退出
- Java之线程的控制
- xml文件sql中大于号、小于号、等号的转义问题
- Cause: dx.jar is missing
- 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭
- Redis设计与实现:读书笔记之二
- ABP+AdminLTE+Bootstrap Table权限管理系统第六节--abp控制器扩展及json封装以及6种处理时间格式化的方法
- activeMQ配置文件
- React Naive 解决防止多次点击的解决方法