Android模块化之MicroModule(微信Pins工程)
微信Pins工程
相信你看过微信关于模块化的分享《微信Android模块化架构重构实践》,也注意到里面提到的pins工程结构。
作者是这样描述的 ------“pins工程能在module之内再次构建完整的多子工程结构,通过project.properties来指定编译依赖关系。通过依赖关系在编译时找到所有的资源和源码路径。”
仔细推敲这句话的意思,应该能知道它实现的基本原理------通过设置sourceSets指定多个java、res等路径.
有关sourceSets的介绍: developer.android.com/studio/buil… google.github.io/android-gra…
但是,有一个问题需要要知道的是,一个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
插件详解: plugins.jetbrains.com/plugin/1078…
插件项目地址: github.com/EastWoodYan…
最后
MicroModule已经上传至Github,欢迎star交流。 github.com/EastWoodYan…
转载于:https://juejin.im/post/5b4875075188251b3a1dbab8
Android模块化之MicroModule(微信Pins工程)相关推荐
- Android模块化之MicroModule(微信Pins工程) 1
微信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 ...
最新文章
- Swift - AppDelegate.swift类中默认方法的介绍
- 库克踏春而来,小而美的 iPhone 全新配件问世
- 新型智能头盔可快速评估患者中风的大小、位置和类型
- linux模块化机制,Linux模块化机制和module_init
- 函数实现不放在头文件的原因,及何时可以放头文件的情况
- patator mysql 字典_利用patator进行子域名爆破
- javscript之数组(一)
- 【第1篇】Python爬虫实战-王者荣耀高清壁纸下载
- Undefined function 'adb' for input arguments of type 'double'.
- Python爬虫框架Scrapy报错:ModuleNotFoundError: No module named 'scrapy'
- arduino 实现时钟和计算器
- ios13 自带字体列表
- 业务安全之接口调用安全
- php实现图片加密,PHP实现支持加盐的图片加密解密.pdf
- IE无法打开链接的处理方法
- Python 程序员需要知道的 30 个技巧(转载)
- MIUI开发版内测资格?超详细教你刷入MIUI欧洲版ROM
- [GYCTF2020]Ez_Express
- 数学家对物理学家的鄙视_物理学家的未来经济学
- 潘多拉盒子 使用 hd-idle 硬盘休眠设置
热门文章
- 【Django】毕设学习笔记(六)
- linux系统 远程桌面连接到服务器,Ubuntu 14.04服务器远程桌面连接
- php 自己电脑运行内存,php 统计网页打开耗时和脚本运行内存
- abb机器人searchl报错_西门子PLC1200与ABB机器人通信
- mysql 数据增量备份_MySQL数据库之mysql全量备份、增量备份实现方法
- 设置eclipse自动生成的author等注释
- 10.Java 面试题整理(CORBA 方面)
- 微信小程序学习笔记02:微信小程序注册
- 无心剑中译阿齐姆·普雷姆吉《苦干加巧干》
- 禁止i5笔记本按Ctrl+Alt+向下键翻转屏幕