插件化-Small插件实例
今天可以处理插件化small的使用,之前已经使用过replugin的项目,但是因为对业务场景使用的问题,可能会从新在写一篇。
现在根据这个框架的样子来创建一个工程。
第一部分:项目框架
app项目(壳工程),app.main(主工程),app.buycar(买车工程),app.sellcar,app.serviceapp
第二部分:壳工程创建
第一步:对壳工程app进行small引入和依赖,项目gradle中。备注:gradle最好使用2.3.0版本,3.0以上版本出现一些bug
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'net.wequick.tools.build:gradle-small:1.3.0-beta6' //small框架 } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } //small声明 apply plugin: 'net.wequick.small' small { // buildToAssets = false strictSplitResources = false android { compileSdkVersion = 26 buildToolsVersion = "25.0.2" supportVersion = "25.1.0" } }第二步:添加正式版本的签名证书(不知道这步到底有没有用)
第三步:在application中对small进行初始化工作。
/** * Created by malei on 2018/5/2. */ public class MyApp extends Application{ @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); Small.preSetUp(this); } }
第四步:在assets文件下添加bundle.json文件,来进行各个进程的跳转声明
{ "version": "1.0.0", "bundles": [ { "uri": "main", "pkg": "com.malei.app.main" }, { "uri": "buycar", "pkg": "com.malei.app.buycar" }, { "uri": "sellcar", "pkg": "com.malei.app.sellcar" } ] }第五步:在MainActivity中进行从壳工程跳转到主工程中
public class MainActivity extends AppCompatActivity { @Override protected void onStart() { super.onStart(); Small.setUp(this,new Small.OnCompleteListener(){ @Override public void onComplete() { Small.openUri("main", MainActivity.this); } }); } }
第三部分:app.mian主工程创建
第一步:创建一个新的module项目
new Module -> phone&Table Module
命名规范:
第二步:主工程向各个业务模块跳转
主工程和各个业务工程其实都不需要进行什么配置,只要跳转就好了
//卖车 this.findViewById(R.id.sellCarBtn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Small.setUp(MainActivity.this,new Small.OnCompleteListener(){ @Override public void onComplete() { Small.openUri("sellcar", MainActivity.this); } }); } }); //买车 this.findViewById(R.id.buyCarBtn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Small.setUp(MainActivity.this,new Small.OnCompleteListener(){ @Override public void onComplete() { Small.openUri("buycar", MainActivity.this); } }); } }); //服务 this.findViewById(R.id.serviceCarBtn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });第四部分:运行项目
项目运行钱,我们需要进行鞋编译处理。打开右边gradle,然后进入small包中,先buildLib下,然后在buildBundle,如果没有异常就可以运行了。如果有问题也可以clearlib和clearBundle下
总结;
small插件
优点:在使用的时候还是比较方便的,配置比较简单,只需要在壳工程中添加些small的配置,其他业务模块工程无需其实处理,使用起来还是比较简单方便的。
缺点:只支持独立module项目,但是不支持独立的apk
small他只支持加载独立的modle项目,并不支持加载原生的apk,使用他更像是为了对大项目进行拆分,对业务模块进行独立编译,去耦合。