插件化2、Small完成插件化
2021-04-02 本文已影响0人
flynnny
市面上现有插件化框架介绍
360手机助手的DroidPlugin框架
出的早,并不能说是一种完整的框架
百度的dynamic-load-apk框架
任玉刚开发的 两年未更新
Small框架
林光亮 还在不停更新
alibaba的Atlas框架
入门难度大
所以重点选择small来完成插件化改造。
具体使用Small完成插件化改造
集成阶段
1按照规则创建对应的project
和普通工程一样
14.png这里最好还是app
2在创建好的project中集成Small
15.pngclasspath:定义自己的编译流程
16.png./gradle small 命令验证small完成集成
17.png3在工程的宿主module中初始化Small
先创建一个Application 重写onCreate
18.png 19.png插件创建阶段
1以指定的规范来创建插件
20.png2编译创建好的插件
21.png 22.png3通过宿主应用启动插件应用
23.png 24.png 25.png正确的启动了。
项目改造阶段
浏览一下要改造的项目功能
分析要把哪些模块隔离到独立的插件区
完成改造
比如:
首页、搜索页、二维码页面都可以独立封装成插件
只要关联性不强的、独立的都可以作为插件。
公共库插件创建
公共库插件存在的必要性
前面的插件都叫业务插件
变为多个app后,很多功能可以复用
公共的代码和资源可以作为公共库插件供其他使用
先创建一个库插件 library 封装网络层
30.png 31.pngcopy代码:
32.png其他app如何使用
33.png疑问 目前network lib和一个普通库有什么区别呢?
答:compile project 这条语句只是在调试的时候使用,但是small在打包时,这条语句并不会真正起作用,及network不会作为库导入到插件中,而是small会把他打成一个和容器类似的公共库工程。最后也是一个so,与业务插件放在一样的位置。
打包验证:
34.png 35.png 36.pngsmall会将公共库打包成公共库插件,而不让gradle执行comple 语句!!
Small进阶知识讲解
1
37.png 38.png2
39.png 40.png 41.png3
42.pngsmall不支持对象类型传递!