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
- 设置Application name为
MySmall
改动Company Domain为
com.example.mysmall
这步是个技巧,在Step3新建Module时将会自己主动带上该前缀
修正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来创建插件模块,须要满足:
- 模块名形如:
app.*
,lib.*
或者web.*
包名包括:
.app.
,.lib.
或者.web.
为什么要这样?由于Small会依据包名对插件进行归类。特殊的域名空间如:“.app.” 会让这变得easy。
对lib.*
模块选择Android Library,其它模块选择Phone & Tablet Module。
创建一个插件模块,比方app.main
:
- 改动Application/Library name为
App.main
改动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
Build libraries (准备基础库)
[./]gradlew buildLib -q (-q是安静模式,能够让输出更好看,也能够不加)
Build bundles (打包全部组件)
[./]gradlew buildBundle -q (-q是安静模式,能够让输出更好看,也能够不加)
这两步,假设你喜欢,也能够在Gradle任务导航里执行
单独编译一个组件能够使用 [./]gradlew -p web.about assembleRelease
或者
7. Run Small
在工具栏,选择app模块,执行。
.文件夹结构
异常处理
转载于:https://www.cnblogs.com/lxjshuju/p/7226175.html
Android插件化(使用Small框架)相关推荐
- android插件化-获取apkplug框架已安装插件-03
上一篇文章成功的将apkplug框架嵌入了应用中而且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现怎样获取全部已安装插件 一 获取框架的System ...
- 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( 从源码角度分析加载资源流程 | Hook 点选择 | 资源冲突解决方案 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( 加载插件包资源 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
最新文章
- 在互联网公司说女生备孕,就像跟你女朋友说你不行一个性质!
- C-Substring的实现
- JOOQ事实:从JPA批注到JOOQ表映射
- 社交网站与网民隐私安全报告(2009)
- uc浏览器TV版最新版本功能简介
- 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
- GDAL学习笔记——OGR投影
- mysql常用的语句_MySQL常用语句集锦
- PowerBuilder开发简单计算器
- 360极速浏览器html手机版,360极速浏览器模拟手机
- 黑苹果能安装mysql吗_黑苹果安装与踩坑记
- Halcon学习笔记——摄像机标定(1)
- WPF QQ群发助手
- 柳州铁一中机器人_柳州铁一中学学子在2020年广西中小学电脑机器人竞赛中勇创佳绩...
- BK7256,Wi-Fi6音视频soc-combo芯片,上海博通-内置Flash,支持720P
- 福特汉姆大学计算机科学专业,福特汉姆大学计算机科学排名第131(2018年TFE美国排名)...
- android 微信摇一摇代码,Android微信摇一摇
- 云服务器租赁维护合同,云服务器 租赁 服务合同
- matlab simulink振动,Matlab作业Simulink 振动仿真.doc
- Open-Falcon 配置参数概述
热门文章
- sql 外连接的写法。
- 蓝桥杯 历届试题 分考场(DFS+枚举)
- 常用 IO 模型图解介绍
- CCNA重点难点:思科交换机生成树配置
- 【实验】不会端口映射?看完就会了
- erdas2015几何校正模块在哪_erdas图像几何校正操作步骤指南
- 云原生 DevOps 的 5 步升级路径
- modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点
- eclipse中设置Linux编码环境,更改eclipse中console编码
- python如何导入turtle_centos7里python导入turtle的问题