Android APP增量升级及插件化实现方式
来源:互联网 发布:大麦盒子用什么网络 编辑:程序博客网 时间:2024/05/21 10:45
Android实现应用的增量更新\升级- http://blog.csdn.net/yyh352091626/article/details/50579859
>引用: http://www.2cto.com/kf/201402/276811.html
1.0——>4.0的差异包;
2.0——>4.0的差异包;
3.0——>4.0的差异包;
选择使用这个开源二进制比较工具来实现: http://www.daemonology.net/bsdiff/
Android apk增量升级- http://blog.csdn.net/sbsujjbcy/article/details/46237637
-- Lua语言实现增量升级。
-- Android实现应用的增量更新\升级-- http://blog.csdn.net/yyh352091626/article/details/50579859
-- IncrementallyUpdate-- https://github.com/smuyyh/IncrementallyUpdate
Android应用市场省流量更新(增量升级)原理解析- http://blog.csdn.net/jiangwei0910410003/article/details/53227940
> 由于java本身并没有提供相应的api,我们需要C去帮助实现,然后生成.so包进行调用。相对于生成差异包的bsdiff,也给提供了另一个bspatch。 差异包示例: https://github.com/JackCho/AndroidPatchUpdate
Android 增量更新完全解析 是增量不是热修复-- http://blog.csdn.net/lmj623565791/article/details/52761658
https://github.com/hongyangAndroid/BsDiff_And_Patch
Android应用市场省流量更新(增量升级)原理解析- http://blog.csdn.net/jiangwei0910410003/article/details/53227940
------------------------------------------------------------------------------
Android中插件开发篇总结和概述-- http://blog.csdn.net/jiangwei0910410003/article/details/48104581
Android中插件开发篇之----应用换肤原理解析 http://blog.csdn.net/jiangwei0910410003/article/details/47679843
插件开发的技术,当然本质还是动态加载-- https://github.com/Qihoo360/DroidPlugin
将插件apk中资源添加到宿主apk中。这时候就需要用一种方式了,采用反射的机制:
通过调用AssetManager中的addAssetPath方法,我们可以将一个apk中的资源加载到Resources中,由于addAssetPath是隐藏api我们无法直接调用,所以只能通过反射,下面是它的声明,通过注释我们可以看出,传递的路径可以是zip文件也可以是一个资源目录,而apk就是一个zip,所以直接将apk的路径传给它,资源就加载到AssetManager中了,然后再通过AssetManager来创建一个新的Resources对象,这个对象就是我们可以使用的apk中的资源了。
应用换肤的原理,核心技术就是:如何加载插件Apk中的资源。
加载会有两种方式:
1、使用反射机制修改类加载器
2、使用代理的方式
类加载器是符合双亲委派机制的。
PathClassLoader和DexClassLoader类加载器的父类BaseDexClassloader
在使用反射机制来动态加载Activity的时候,有两个思路:
1>、替换LoadApk类中的mClassLoader变量的值,将我们动态加载类DexClassLoader设置为mClassLoader的值
2>、合并系统默认加载器PathClassLoader和动态加载器DexClassLoader中的dexElements数组
这两个的思路原理都是一样的:就是让我们动态加载进来的Activity能够具备正常的启动流程和生命周期。
插件两种方式的比较
第一种方式:使用反射机制来实现
优点:可以不用太多的关心插件中的Activity的生命周期方法,因为他加载进来之后就是一个真正意义上的Activity了
缺点:需要在宿主工程中进行声明,如果插件中的Activity多的话,那么就不灵活了。
第二种方式:使用代理机制来实现
优点:不需要在宿主工程中进行声明太多的Activity了,只需要有一个代理Activity的声明就可以了,很灵活
缺点:需要管理手动的去管理插件中Activity的生命周期方法,难度复杂。
Android免Root无侵入AOP框架Dexposed- http://blog.csdn.net/u010687392/article/details/48316051
插件化开发—动态加载技术加载已安装和未安装的apk- http://blog.csdn.net/u010687392/article/details/47121729
使用动态加载技术时,一般需要用到这两个类加载器:
PathClassLoader - 只能加载已经安装的apk,即/data/app目录下的apk。
DexClassLoader - 能加载手机中未安装的apk、jar、dex,只要能在找到对应的路径。
优雅的App完全退出方案(没有任何内存泄漏隐患)- http://blog.csdn.net/u010687392/article/details/46879081
APP中一种在Java层实现的简单守护进程方式- http://blog.csdn.net/hejjunlin/article/details/52779986
其实你不知道MultiDex到底有多坑- http://www.open-open.com/lib/view/open1452264136714.html?ref=myread
Android高级之十三讲-HotFix、热加载和增量更新- http://blog.csdn.net/reboot123/article/details/53641127
- Android APP增量升级及插件化实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- Android APP增量升级的实现方式
- android app 增量升级
- Android app智能升级(增量更新)
- Android app智能升级(增量更新)_AndroidStudio
- android实现app增量更新
- Android--增量升级--增量更新客户端的实现方法
- Android--增量升级--增量更新客户端的实现方法
- Java For循環的幾種用法
- 生成窗口最大值数组
- 理解Spring4.0新特性@RestController注解
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
- WinSCP 5.6版本中文目录乱码问题解决方案
- Android APP增量升级及插件化实现方式
- OSSIM入门 最新课程 (时长5小时20分)
- Leetcode 171. Excel Sheet Column Number
- 策略模式
- 度量快速开发平台网格勾选行(标识行),多选行获取方法
- 浅析Java中的XML
- 2016年求职找工作千万小心这些求职陷阱
- Oracle Indexes(索引)
- Win7硬盘安装CentOS7双系统