美文网首页android日常开发
android插件化-small框架初次使用

android插件化-small框架初次使用

作者: 众少成多积小致巨 | 来源:发表于2019-06-22 10:59 被阅读0次

文章参考来源:

small框架官网: https://github.com/wequick/Small/tree/master/Android

gradle版本,插件版本介绍:https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-plugin


1.新建宿主工程

修改项目下的gradle配置:如下

添加依赖,应用插件,添加编译任务;

特别注意:Small插件自身与gradle兼容问题,gradle插件版本和版本需要不能随意配置;

个人实践:插件版本不能超过2.3.0,版本不要是4.6

由于加载插件需要对Application注入一些方法,我们对包名目录 app > java > com.example.mysmall 右键 New > Java Class 来新建一个Application,并在AndroidManifest.xml文件中指定application名字   android:name=".SmallApplication"


2、新建插件模块

右键 app 模块 > New > Module,创建一个应用模块 Phone & Tablet Module或者Android Library;

需注意两点,如下图

  1) 模块名形如:app.*, lib.*或者web.*,插件用于识别查找

  2) 包名必须为*.app.*


3、编译插件

在 Terminal 面板,先编译公共库 : gradlew buildLib

再编译  插件: gradlew buildBundle


4、启动插件

右键 app 模块,New > Folder > Assets Folder 新建 assets 目录:

再右键生成的 assets 目录,New > File 新建路由配置文件 bundle.json

回到宿主的 app > java > com.example.mysmall > MainActivity,在 onStart 方法中我们通过上述配置的 uri 来启动 app.main 插件

5、运行编译运行主app即可

6、热更新

Small类中方法:

public static boolean updateManifest(JSONObject manifest, boolean force): force表示更新bundle.json文件

public static Bundle getBundle(String bundleName): 获取pkg = bundleName插件信息

Bundle 类中方法:public File getPatchFile():获取插件文件

热更新的实质是新文件替换旧文件;Small框架,优先加载Download目录下的文件

Small插件文件位置

到现在为止,使用Small的一个项目已经可以运行了;从自己折腾使用这个框架以及对插件化热更新框架认知来看

1)插件化,热更新的实质都是动态加载

2)动态加载,需要解决资源,类加载,四大组件启动及生命周期,资源

3)由于动态加载依赖现有系统基础上进行解决2问题,所以很多兼容性、稳定性问题

4)从android技术发展到现在,其优点基本只有快速更新、修复apk功能;

我自己认为其并有减少模块耦合的作用;但是非插件化的模块间耦合是项目内部设计的,认为考虑各方面优势所作出的取舍;而插件化的耦合是强制的,所以这并不是优点,而且是不得已而为之,造成项目总体积变大

相关文章

网友评论

    本文标题:android插件化-small框架初次使用

    本文链接:https://www.haomeiwen.com/subject/fjyvfctx.html