一个项目包涵多个module,且互相独立,没有依赖关系,但是可以相互跳转,方便维护,多个module插在一个app宿主上,这是我理解的插件化。
包含公共库插件lib,业务插件module及宿主app(只做壳用没有业务逻辑)
由于插件化是彻底分离的,底层是通过path来找到彼此,因此需要规定好path 映射关系,动态加载。 这里学习的是small框架。
首先需要在PRoject根目录的build.gradle中添加如下代码
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'net.wequick.tools.build:gradle-small:1.1.0-beta4' }}allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buildDir}apply plugin: 'net.wequick.small'small { aarVersion = '1.1.0-alpha1'}然后 创建跳转的第一个module 这里叫做app.main并在app的assets下的bundle.json指定映射关系
{ "version": "1.0.0", "bundles": [ { "uri": "main",//跳转时指定main即到pkg包的启动activity中 "pkg": "com.xiaov.mysmall.app.main" } ]}第三步 配置签名文件根目录下新建sign–>release.jks app的build.gradle下指定
signingConfigs { release { storeFile file('../sign/release.jks') storePassWord "111111" keyAlias "small" keyPassword "111111" } } buildTypes { release { signingConfig signingConfigs.release } }最后在代码中做简单配置
public class Myapplication extends Application { @Override public void onCreate() { super.onCreate(); Small.preSetUp(this); }}<application android:name="MyApplication" ... >最后执行跳转 在app的MainActivity中
@Override protected void onStart() { super.onStart();// Small.setBaseUri("http://example.com/"); Small.setUp(this, new net.wequick.small.Small.OnCompleteListener() { @Override public void onComplete() { Small.openUri("main", MainActivity.this);//启动默认的Activity,参考wiki中的UI route启动其他Activity } }); }运行app前需要执行如下两个命令
gradlew buildLib -qgradlew buildBundle -q官方:https://github.com/wequick/Small 此简易demo地址:https://github.com/androidjiawei/MySmall/tree/master/Android/MySmall
新闻热点
疑难解答