文档章节

Android插件化动态加载原理(一)

chunquedong
 chunquedong
发布于 2016/05/17 22:33
字数 465
阅读 1126
收藏 18

Android插件化开发有很多原因,主要是为了不重新安装的情况下动态更新应用,和能减小安装包大小。用起来有种HTML5能及时更新的感觉。

虽然网上有一些开源库,但都不是很熟。有些项目使用了大量的Android系统私有API,兼容性是个问题。有些库则使用比较麻烦,需要使用定制的编译工具和特殊的编程约定,学习成本较高。也没有完整的自动更新机制,还需要二次开发。

所以就有了axbasePlugin项目,这是一个轻量级的Android插件化开发框架。支持下面的功能

  • 完整解决方案,不止核心引擎
  • 非隔离式,宿主和插件间可自由通信
  • 非侵入式设计,插件和普通App代码编写方式无区别
  • 插件可作为独立App安装运行,便于测试和独立分发
  • 支持Service等四大组件,和.so文件
  • 支持assets目录中预制插件和网络下载方式
  • 不需要手动分配资源ID或者使用定制aapt打包
  • 最小化Hook系统私有API数量,运行更稳定
  • 插件库大小不到60k,极致体积

和DroidPlugin库不同的地方是,DroidPlugin试图覆盖所有系统API,虚拟出一个运行环境。而axbasePlugin则采用轻量级的方法,尽量减少对系统私有API的依赖。

后面会陆续更新插件化开发原理的文章,这篇算开篇。 请关注axbasePlugin插件化开发框架Github

更新:

© 著作权归作者所有

共有 人打赏支持
chunquedong

chunquedong

粉丝 45
博文 131
码字总数 36559
作品 4
海淀
高级程序员
加载中

评论(6)

chunquedong
chunquedong

引用来自“维维诺”的评论

大神你好,我在调试demo的时候发现一个问题,当host调起plugin打开plugin界面的时候,host的界面destory了,这是为何呢?
launch的最后一个参数传false就行了
维维诺
维维诺
我看了下源码,有设置的79
维维诺
维维诺
大神你好,我在调试demo的时候发现一个问题,当host调起plugin打开plugin界面的时候,host的界面destory了,这是为何呢?
chunquedong
chunquedong

引用来自“维维诺”的评论

LZ,你这个框架在寄生的apk中,能否加载资源文件之类的?
可以加载资源文件
维维诺
维维诺
LZ,你这个框架在寄生的apk中,能否加载资源文件之类的?
bbdlg
bbdlg
哈,楼主对Android的研究之深入令人佩服,我之前写过一篇关于插件式开发的文字,不过是应用层的。我苦于工作繁杂,贴出来希望能对你有所参考。
http://mp.weixin.qq.com/s?__biz=MjM5ODY2NTI2MQ==&mid=2648449818&idx=1&sn=060d735654f9abd829fc66e16d0bcfee#rd

另,在第二三篇上,如果加上第一篇的链接就更好了:D
Android插件化开发,初入殿堂

好久没有写博客了,这次准备写写我这几天的研究成果——Android插件化开发框架CJFrameForAndroid。 背景交代 首先,你需要知道什么是插件化开发。就拿最常见的QQ来说,在第三个界面动态那里有...

kymjs张涛
2014/10/12
0
9
有关Android插件化的一些总结思考

最近几年移动开发业界兴起了「 插件化技术 」的旋风,各个大厂都推出了自己的插件化框架,各种开源框架都评价自身功能优越性,令人目不暇接。随着公司业务快速发展,项目增多,开发资源却有限...

技术小能手
07/20
0
0
自己动手写Android插件化框架,让老板对你刮目相看

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

腾讯云加社区
10/15
0
0
我的Android重构之旅:插件化篇

随着项目的不断成长,即便项目采用了 MVP 或是 MVVM 这类优秀的架构,也很难跟得上迭代的脚步,当 APP 端功能越来越庞大、繁琐,人员不断加入后,牵一发而动全局的事情时常发生,后续人员如同...

codeGoogle
07/09
0
0
Android插件化开发之动态加载技术学习

Android插件化开发之动态加载技术学习 为什么要插件化开发和动态加载呢?我认为原因有三点: 可以实现解耦 可以解除单个dex函数不能超过65535的限制 可以给apk瘦身,比如说360安全卫士,整个...

幸运券发放
05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL面试题集锦

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正...

老道士
37分钟前
0
0
使用 LogStash 归集日志

elastic 官网: https://www.elastic.co/ 为了便于集中查看多台主机的业务日志,使用 Filebeat, Redis, Logstash的方式进行收集: (1) Filebeat 监控日志文件的变化, 将新增部分写入redis中, 每...

ouhoo
40分钟前
0
0
java序列化(六) - protostuff序列化

添加依赖 <dependency> <groupId>io.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.5.9</version> </de......

晨猫
47分钟前
0
0
Ceph学习笔记1-Mimic版本多节点部署

特别说明: 本方法也可以用于单节点部署,只部署一个Monitor(只是会形成单点故障而已),最低要求是使用两个分区创建2个OSD(因为默认最小副本是2);如果不需要使用CephFS,则可以不部署M...

LastRitter
49分钟前
0
0
923. 3Sum With Multiplicity - LeetCode

Question 923. 3Sum With Multiplicity Solution 题目大意: 给一个int数组A和一个目标值target,求满足下面两个条件的组合个数,其中i,j,k分别为数组的索引 i<j<k target = A[i] + A[j] + A[k...

yysue
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部