android插件化 small rules
来源:互联网 发布:淘宝网购酸枣面 编辑:程序博客网 时间:2024/06/01 09:49
为什么要用small:
1:解决65535的问题,不再依赖multidex,拆分dex变的可控
2:small提供了一套插件间的解藕和通信方案,使得独立开发各个模块变得更加容易
3:解藕后,各个业务模块可以独立更新
4:低入侵性,即使后来改用其他的插件化方案也不需要更改代码结构--切换方案弹性更大
1: bundle.json
用来配置需要被加载的插件
{ "uri": "account", "pkg": "com.wuage.steel.appaccount", "rules": { "login": "JumpLoginActivity" }, "type": "lib"}
uri: 为插件之间跳转的链接,可以随便定义
pkg: 模块的包名
rules:定义插件须向外暴露的activity的名字
type:定义插件[lib |app],两者之间没有清晰的界限(如果只是定义utils类,做成lib插件,如果是业务模块,页面较多,做成app插件),
如果不加type属性,url需按照模块名命名lib.* , app.*否则会造成模块加载失败
2:如果插件需要被依赖,则不能做成app.* , 如果需要被依赖做成lib.*插件;
3:公共库放到宿主工程,即module app
4:所有插件签名必须一致,否则会造成插件加载失败
5:跳转规则
Small.openUri("uri/rule",context); 用于 跳转到其他插件的activity
Small.createObject("[ fragment | fragment-v4]" , uri , context) ; 用于加载其他插件的fragment
6:关于更新
small支持模块动态更新(但不是热更新),通过应用切到后台的方式来kill掉进程来达到模块重新加载-(看起来像热更新,但不是),其实是应用重启了,使用的时候应该注意保存应用状态。
不建议使用,我们自己做的时候可以考虑其他策略。
http://wequick.github.io/small/upgrade/bundles.json (升级json格式)
"updates": [ { "pkg": "net.wequick.example.small.app.about", "url": "http://wequick.github.io/small/upgrade/libnet_wequick_example_small_app_about.so" } ]
因为涉及到模块之间的依赖 ,即各个插件间不同版本的依赖 (moduleA v3 版本 依赖 moduleB v4版本, 升级后moduleA v4版本依赖 moduleB v6版本 ),以及app版本号的不同,策略之间的相互配合及各种未考虑的情况可能会导致升级失败。(可以先使用简单的升级策略)
坑:
1: 不要将百川openaccount sdk放到 插件中
原因:openaccount sdk中通过反射的方式获取资源(获取到到是宿主的id),从而导致获取不到插件中的资源。
2: 宿主不要依赖任何 插件
原因:compile是将依赖编译成aar,而small在编译的时候会将插件以application的方式编译成so,导致依赖错误。
3: app.*不能被依赖,即不能 compile project(":app.*")
- android插件化 small rules
- Android插件化(使用Small框架)
- Android插件化(使用Small框架)
- Android插件化(使用Small框架)
- Android Plugin 插件化技术-Small插件框架
- Android Plugin 插件化技术-Small插件框架
- Android Plugin 插件化技术-Small插件框架
- [技术研究]Android插件化技术学习(Small插件框架)
- Android Small插件化框架--Android应用类加载机制
- Android自助餐之插件化(使用Small框架)
- Android Small插件化框架源码分析[魅族Degao]
- Android自助餐之插件化(使用Small框架)
- Android自助餐之插件化(使用Small框架)
- android插件化框架 small对资源的支持
- android插件化small框架初探(一)
- Android Small插件化框架--类加载实现解析
- small插件
- 插件化技术-Small插件框架
- Oracle EBS Interface/API(6)--WIP接口表:WIP.WIP_JOB_DTLS_INTERFACE数据字典
- 各个版本Xcode 下载
- 【codevs 1008】选数
- sqlplus常用命令(持续更新...)
- 如何利用HTML5快速开发一款小游戏
- android插件化 small rules
- 第十周项目2-二叉树遍历的递归算法
- 关于应用在Xcode8上运行时的报错:Assigning to 'id<XXDelegate>' from incompatible type...
- Java - (== +优先级问题)
- 第十一周项目2-用二叉树求解代数表达式
- apache tez
- 深入浅出mybatis中原始dao的开发和mapper代理开发
- Swift3.0语言教程比较、判断字符串
- VR、AR、MR和CR分别是什么