Android模块化之MicroModule(微信Pins工程) 1
微信Pins工程
相信你看过微信关于模块化的分享《微信Android模块化架构重构实践》,也注意到里面提到的pins工程结构。
作者是这样描述的 ------“pins工程能在module之内再次构建完整的多子工程结构,通过project.properties来指定编译依赖关系。通过依赖关系在编译时找到所有的资源和源码路径。”
仔细推敲这句话的意思,应该能知道它实现的基本原理------通过设置sourceSets指定多个java、res等路径.
有关sourceSets的介绍:
https://developer.android.com/studio/build/index.html#sourcesets
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.api.AndroidSourceSet.html
但是,有一个问题需要要知道的是,一个module只能指定一个AndroidManifest文件,pins工程中包含了多个AndroidManifest,它是怎么做到的?
研究过com.android.tools.build:gradle
,会留意到它使用到一个子库com.android.tools.build:manifest-merger
,官方通过这个库来合并多个AndroidManifest文件,或许pins工程也是用了这方式。
接下来,再它的基础上,我做的一些改动,取了另一个名字叫 MicroModule,先来看一下工程结构:
与pins工程的结构大致不变,增加了androidTest
和test
,以及将project.properties
替换为build.gradle
。
MicroModule 介绍
基本原理是不变的,与微信pins工程一样配置sourceSets
。AndroidManifest合并用了com.android.tools.build:manifest-merger
。
Usage
在根项目的build.gradle中添加插件依赖:
buildscript {repositories {jcenter()...}dependencies {classpath 'com.eastwood.tools.plugins:micro-module:1.0.1'...}
}
在模块的build.gradle中引用插件并配置 MicroModule:
// 'micro-module'要置于'com.android.application'或'com.android.library'前。
apply plugin: 'micro-module'
apply plugin: 'com.android.application'// 为了防止两个没有依赖关系的MicroModule产生引用,可以开启下面这个代码边界检查插件。
// apply plugin: 'micro-module-code-check'...microModule {// 这里的include类似于settings.gradle中include。include ':p_home'include ':p_common'include ':p_base'
}
MicroModule中的build.gradle:
dependencies {implementation microModule(':MicroModule名称') // 定义依赖关系,引用其他MicroModule// 你也可以在这里依赖其他第三方库// implementation '***'// api '***'// ...
}
为了使用上的更加方便,专门写了Android Studio的插件,能快速的创建一个MicroMoudle.
插件安装步骤:
- 打开 [File] -> [Settings...] -> [plugins] -> [Browse repositories...]
- 搜索插件名称 MicroModule
插件详解:
https://plugins.jetbrains.com/plugin/10785-micromodule
插件项目地址:
https://github.com/EastWoodYang/micro-module-idea-plugin
最后
MicroModule已经上传至Github,欢迎star交流。
https://github.com/EastWoodYang/MicroModule
Android模块化之MicroModule(微信Pins工程) 1相关推荐
- Android模块化之MicroModule(微信Pins工程)
微信Pins工程 相信你看过微信关于模块化的分享<微信Android模块化架构重构实践>,也注意到里面提到的pins工程结构. 作者是这样描述的 ------"pins工程能在m ...
- 微信 Android 模块化架构重构实践
微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...
- 微信Android模块化架构重构实践
微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...
- 美团猫眼android模块化实战-可能是最详细的模块化实战
转载请注明出处: 美团猫眼电影android模块化实战–可能是最详细的模块化实战 地址:http://blog.csdn.net/qq_22744433/article/details/7794844 ...
- 美团猫眼电影android模块化实战--可能是最详细的模块化实战
转载请注明出处: 美团猫眼电影android模块化实战–可能是最详细的模块化实战 地址:http://www.jianshu.com/p/d372cc6802e5 目录 1 写这篇博客的初衷 首先一句 ...
- Android studio实现仿微信界面
一.静态界面实现(.xml) 功能需求 1.上方有标题(居中) 2.中间显示内容,内容随着下方控件而切换. 3.下方四个控件可切换. 实现页面展示: 共三大部分,顶部和底部一直不变,中间部分随着点击切 ...
- 关于Android模块化我有一些话不知当讲不当讲
关于Android模块化我有一些话不知当讲不当讲 最近公司一个项目使用了模块化设计,本人参与其中的一个小模块开发,但是整体的设计并不是我架构设计的,开发半年有余,在此记录下来我的想法. 关于Andro ...
- android/iphone/windows/linux/微信声波通讯库
声波通讯让传统的各种linux设备,单片机设备等等能编程的设备与智能手机之间有了数据传输的能力,这在智能家居.医疗设备.工业应用等各个行业有了大力应用的机会. 声波通讯让电脑与手机连通:电脑一般都有音 ...
- 微信分享功能android,关于Android实现简单的微信朋友圈分享功能
1.先下载微信分享的jar包放在lib目录下,并且添加依赖, android:name=".wxapi.WXEntryActivity" android:exported=&quo ...
最新文章
- java应用窗口大小_java 如何让程序窗口随屏幕大小改变 | 学步园
- Linux 学习记录 四(Bash 和 Shell scirpt).
- 10月份个人技术指标
- Linux环境下安装PHP的memced扩展
- 「Python-Pycharm」zipimport.ZipImportError: can‘t decompress data; zlib not available
- js模板引擎——art Template
- 09 / LiveVideoStack主编观察:有趣的灵魂是一面镜子
- AIDL Service,跨进程调用Services
- LeetCode 764. 最大加号标志(DP)
- fleaPHP框架的一些基础问题
- 20180514-A · Star Wars Survey · ggplot2 ggdraw geom_bar facet_grid magick 柱状图 条形图 · R 语言数据可视化 案例 源码
- 24AA512/24LC512/24FC512系列器件中文翻译
- WebStorm之如何清除缓存
- html入住登记源码,酒店客户入住登记管理系统设计与实现.doc
- C语言入门(一)——程序的基本概念
- SV绿皮书笔记(八)
- [04]Web前端进阶—JS伪数组
- Java 校验注解的使用、自定义校验注解
- 七牛云绑定阿里云域名
- ML—广义线性模型导论