Android插件化(Small框架使用教程1)
1、1.创建项目,这一步和以往创建项目都一样,包名工程名,放置路径都可以自己定

2、2.集成small,对project/build.gradle修改如下,现在版本是1.3.0-beta5:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' classpath 'net.wequick.tools.build:gradle-small:1.3.0-beta5' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}apply plugin: 'net.wequick.small'allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buildDir}small { aarVersion = '1.3.0-beta5'}

3、新建applicaiton,如果项目中用到数据库,初始化也在宿主的applicaiton中初始化
public class MyApplicaiton extends Application { @Override public void onCreate() { super.onCreate(); Small.preSetUp(this); Small.setLoadFromAssets(BuildConfig.LOAD_FROM_ASSETS); Small.setUp(this, new Small.OnCompleteListener() { @Override public void onComplete() { } }); }}
4、新建插件Module:
实例:
Application Name: App.main
Module name: app.main
package name: com.example.mysmall.app.main
如果选择Android Library,app.*换成lib.*

5、要启动插件,先配置路由:
1.新建assets文件夹,新建bundle.json文件
{ "version": "1.0.0", "bundles": [ { "uri": "app.main", "pkg": "com.beckett.smalldemo.app.mian" }, { "uri": "lib.common", "pkg": "com.beckett.smalldemo.lib.common" } ]}
参数含义:
version,是 bundle.json 文件格式版本,目前始终为 1.0.0
bundles,插件数组
uri,插件唯一ID
pkg,插件包名


6、跳转到插件Activity:
实例:从宿主调到app.main插件
1.为了看出跳转,在app.main插件里的启动activity的布局里放入“我是app.main插件”的textview
2.在宿主app的启动activity里加入代码:
Small.openUri("app.main", MainActivity.this);
注意:宿主不宜放过多的东西,如果有很多东西要放必须另建一个替身,即app+stub,特别注意替身是library而不是applicaiton,这里暂时不涉及替身


7、编译插件(特别注意:如果你是要模拟器调试,需要编译生成插件到 x86 架构下,不然模拟器运行会闪退,编译过程很慢,需要等待)
在 Terminal 面板,依次打以下命令:
gradlew cleanLib cleanBundle
gradlew buildLib
gradlew buildBundle
如果是要打模拟器运行的包,后两句换成即可:
gradlew buildLib -q -Dbundle.arch=x86
gradlew buildBundle -q -Dbundle.arch=x86

8、成功后,可以在宿主的jnilibs/armeabi文件路径下找到插件的.so包,然后运行宿主即可运行,也可以单个插件调试,如下图3所示,small框架的方便之处就是这个,可以单个插件调试!



9、运行app和app.main的最后截图,对比发现单个插件运行调试时,toolbar显示的名字为插件的名字


10、输入命令后打包不成功的可能的原因:
1.查看你的module和lib是否创建错了
2.查看配置路由的json文件是否包名有写错
3.查看jnilibs下是否正确生成.so包
11、demo代码上传百度云盘,链接:链接:https://pan.baidu.com/s/1bb2fKR2L8-dJD57nwLcicA 密码:3cj1