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 name为MySmall
  2. 改动Company Domain为com.example.mysmall

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

  3. 修正Package name为com.example.mysmall

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.” 会让这变得easy。

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

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

  1. 改动Application/Library name为App.main
  2. 改动Package name为com.example.mysmall.app.main

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中增加签名配置(password改成自己的):

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() {@Overridepublic void onStart(int bundleCount, int upgradeBundlesCount, long upgradeBundlesSize) {}@Overridepublic void onProgress(int bundleIndex, String bundleName, long loadedSize, long bundleSize) {}@Overridepublic void onComplete(Boolean success) {Small.openUri("main", LaunchActivity.this);}});
}

6. Compile Small

  1. Build libraries (准备基础库)

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

  2. Build bundles (打包全部组件)

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

这两步,假设你喜欢,也能够在Gradle任务导航里执行

单独编译一个组件能够使用 [./]gradlew -p web.about assembleRelease
或者

7. Run Small

在工具栏,选择app模块,执行。

.文件夹结构

异常处理

1、上面是给出的步骤 可是须要注意的是新建插件模块的时候比方输入的是app.main 这个时候包名须要注意改动为相似com.example.small.app.main  而不是com.example.small.appmain 这样执行会出问题。
2、假设编译出现故障 须要先执行./gradlew cleanLib

转载于:https://www.cnblogs.com/lxjshuju/p/7226175.html

Android插件化(使用Small框架)相关推荐

  1. android插件化-获取apkplug框架已安装插件-03

    上一篇文章成功的将apkplug框架嵌入了应用中而且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现怎样获取全部已安装插件 一 获取框架的System ...

  2. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  3. 【Android 插件化】Hook 插件化框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  4. 【Android 插件化】Hook 插件化框架 ( 从源码角度分析加载资源流程 | Hook 点选择 | 资源冲突解决方案 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  5. 【Android 插件化】Hook 插件化框架 ( 加载插件包资源 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  6. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  8. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  9. 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

最新文章

  1. 在互联网公司说女生备孕,就像跟你女朋友说你不行一个性质!
  2. C-Substring的实现
  3. JOOQ事实:从JPA批注到JOOQ表映射
  4. 社交网站与网民隐私安全报告(2009)
  5. uc浏览器TV版最新版本功能简介
  6. 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
  7. GDAL学习笔记——OGR投影
  8. mysql常用的语句_MySQL常用语句集锦
  9. PowerBuilder开发简单计算器
  10. 360极速浏览器html手机版,360极速浏览器模拟手机
  11. 黑苹果能安装mysql吗_黑苹果安装与踩坑记
  12. Halcon学习笔记——摄像机标定(1)
  13. WPF QQ群发助手
  14. 柳州铁一中机器人_柳州铁一中学学子在2020年广西中小学电脑机器人竞赛中勇创佳绩...
  15. BK7256,Wi-Fi6音视频soc-combo芯片,上海博通-内置Flash,支持720P
  16. 福特汉姆大学计算机科学专业,福特汉姆大学计算机科学排名第131(2018年TFE美国排名)...
  17. android 微信摇一摇代码,Android微信摇一摇
  18. 云服务器租赁维护合同,云服务器 租赁 服务合同
  19. matlab simulink振动,Matlab作业Simulink 振动仿真.doc
  20. Open-Falcon 配置参数概述

热门文章

  1. sql 外连接的写法。
  2. 蓝桥杯 历届试题 分考场(DFS+枚举)
  3. 常用 IO 模型图解介绍
  4. CCNA重点难点:思科交换机生成树配置
  5. 【实验】不会端口映射?看完就会了
  6. erdas2015几何校正模块在哪_erdas图像几何校正操作步骤指南
  7. 云原生 DevOps 的 5 步升级路径
  8. modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点
  9. eclipse中设置Linux编码环境,更改eclipse中console编码
  10. python如何导入turtle_centos7里python导入turtle的问题