android应用动态补丁实现新思路
来源:互联网 发布:网络编程实用教程第3版 编辑:程序博客网 时间:2024/06/15 13:24
常见补丁方案有:
1,对可能变化的类定义出接口,采用java反射技术,动态加载补丁包,完成实例化,但如果补丁实现和host存在交叉依赖,则会因为类名重名导致jvm报错,安全的需要,对模块解耦设计要求很高,使用范围有限
2,自定义新的classloader替代context里面原有的classloader,对发生变化的类使用新创建的classloader,此方案一般仅对未加载的activity对象有效,同时也存在方案一的弊端,使用范围受限
3,使用native实现替代原有class里的方法,修改难度高,可移植能力差
在此,我给出一种新思路,仅供参考:
对需要修改的内容放入自定义的补丁文件中,在应用启动初期,在native层,通过jvm对象定位到应用的classes.dex对应的DexFile对象,修正其中需要修改的项,则完成补丁工作。对已加载类,需要把jvm里的对应的类缓存清空,则会自动从DexFile里重新读取,实现动态修改。 此改动难度大,但理论上补丁能力是最强,代码改动行其实不大,值得采用。
0 0
- android应用动态补丁实现新思路
- Android中实现热补丁动态修复
- android 动态补丁技术
- Android 热补丁动态修复
- Android 热补丁动态修复
- 一种在android中实现MVP模式的新思路
- 一种在android中实现MVP模式的新思路
- 一种在android中实现MVP模式的新思路
- 一种在android中实现MVP模式的新思路
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android热补丁动态修复实践
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- EncodeDemo
- 传参和继承
- oracle用 pl/sql 可以连接,用cmd无法连接的解决方法
- 关于程序提示丢失msvcr120.dll的解决办法
- EncodeDemo2
- android应用动态补丁实现新思路
- 第13周项目6-体验文件操作
- 一个很有借鉴价值的编程故事
- 简易时光轴实现
- POJ--2184--Cow Exhibition--01背包
- HDU 1298 - T9(trie树)
- 用jspSmartUpload控件上传文件,其他参数值为null的问题解决
- 使用grunt-hub实现多个grunt项目一次运行
- Unity3D学习之(类和方法)