Android插件化(使用Small框架)

github:

https://github.com/cayden/MySmall

Android插件化(使用Small框架)

框架源码

1. Create Project

File->New->New Project...

1.1 Configure your new project

假设宿主包名为com.example.mysmall

  1. 设置Application nameMySmall
  2. 修改Company Domaincom.example.mysmall

    这步是个技巧,在Step3新建Module时将会自动带上该前缀

  3. 修正Package namecom.example.mysmall

New small project

1.2 Add an activity to mobile

这步推荐使用Fullscreen Activity,作为启动界面再好不过。 在配置Activity界面,建议把Activity Name改为LaunchActivity(使名符其实)。

2. Configure Small

修改Project的build.gradle

2.1 加入Small编译库
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'net.wequick.tools.build:gradle-small:0.1.1'
    }
}

...

apply plugin: 'net.wequick.small'
2.2 配置Small DSL (可选)

目前只有一个属性aarVersion,表示Small aar的代码库版本。如果没有设置,默认为gradle-small的版本。

small {
    aarVersion = '0.1.2'
}

最新的版本号可以在Bintray上看到。

3. Create Module

File->New->Module来创建插件模块,需要满足:

  1. 模块名形如:app.*lib.*或者web.*
  2. 包名包含:.app..lib.或者.web.

    为什么要这样?因为Small会根据包名对插件进行归类,特殊的域名空间如:“.app.” 会让这变得容易。

lib.*模块选择Android Library,其他模块选择Phone & Tablet Module

创建一个插件模块,比如app.main

  1. 修改Application/Library nameApp.main
  2. 修改Package namecom.example.mysmall.app.main

    New small module

4. Configure UI route

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

右键assets目录->New->File,新建bundles.json文件,加入:

{
  "version": "1.0.0",
  "bundles": [
    {
      "uri": "main",
      "pkg": "com.example.mysmall.app.main"
    }
  ]
}

5. Setup Small

5.1 配置签名

切换到Project目录树,右键MySmall,新建sign目录,添加release.jks签名文件。

app模块的build.gradle中增加签名配置(密码改成自己的):

signingConfigs {
    release {
        storeFile file('../sign/release.jks')
        storePassword "5mall@ndro!d"
        keyAlias "small"
        keyPassword "5mall@ndro!d"
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}
5.2 配置基础依赖

app模块增加共享的依赖库,比如:

compile 'com.android.support:design:23.1.1'
5.3 加载插件

app模块的LaunchActivity重载onStart方法:

@Override
protected void onStart() {
    super.onStart();
    Small.setBaseUri("http://example.com/");
    Small.setUp(this, new net.wequick.small.Bundle.OnLoadListener() {
        @Override
        public void onStart(int bundleCount, int upgradeBundlesCount, long upgradeBundlesSize) {

        }

        @Override
        public void onProgress(int bundleIndex, String bundleName, long loadedSize, long bundleSize) {

        }

        @Override
        public void onComplete(Boolean success) {
            Small.openUri("main", LaunchActivity.this);
        }
    });
}

6. Compile Small

  1. Build libraries (准备基础库)

    [./]gradlew buildLib -q (-q是安静模式,可以让输出更好看,也可以不加)

    Build libraries

  2. Build bundles (打包所有组件)

    [./]gradlew buildBundle -q (-q是安静模式,可以让输出更好看,也可以不加)

    Build bundles

这两步,如果你喜欢,也可以在Gradle任务导航里运行
Small tasks

单独编译一个组件可以使用 [./]gradlew -p web.about assembleRelease
或者
Sub tasks

7. Run Small

在工具栏Run small,选择app模块,运行。

.目录结构



异常处理

1、上面是给出的步骤 但是需要注意的是新建插件模块的时候比如输入的是app.main 这个时候包名需要注意修改为类似com.example.small.app.main  而不是com.example.small.appmain 这样运行会出问题。
2、如果编译出现问题 需要先执行./gradlew cleanLib


  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值