微信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工程的结构大致不变,增加了androidTesttest,以及将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.

插件安装步骤:

  1. 打开 [File] -> [Settings...] -> [plugins] -> [Browse repositories...]
  2. 搜索插件名称 MicroModule

插件详解: plugins.jetbrains.com/plugin/1078…

插件项目地址: github.com/EastWoodYan…

最后

MicroModule已经上传至Github,欢迎star交流。 github.com/EastWoodYan…

转载于:https://juejin.im/post/5b4875075188251b3a1dbab8

Android模块化之MicroModule(微信Pins工程)相关推荐

  1. Android模块化之MicroModule(微信Pins工程) 1

    微信Pins工程 相信你看过微信关于模块化的分享<微信Android模块化架构重构实践>,也注意到里面提到的pins工程结构. 作者是这样描述的 ------"pins工程能在m ...

  2. 微信 Android 模块化架构重构实践

    微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...

  3. 微信Android模块化架构重构实践

    微信Android架构历史 微信Android诞生之初,用的是常见的分层结构设计.这种架构简单.清晰并一直沿袭至今.这是微信架构的v1.x时代. 图1-架构演进 到了微信架构的v2.x时代,随着业务的 ...

  4. 美团猫眼android模块化实战-可能是最详细的模块化实战

    转载请注明出处: 美团猫眼电影android模块化实战–可能是最详细的模块化实战 地址:http://blog.csdn.net/qq_22744433/article/details/7794844 ...

  5. 美团猫眼电影android模块化实战--可能是最详细的模块化实战

    转载请注明出处: 美团猫眼电影android模块化实战–可能是最详细的模块化实战 地址:http://www.jianshu.com/p/d372cc6802e5 目录 1 写这篇博客的初衷 首先一句 ...

  6. Android studio实现仿微信界面

    一.静态界面实现(.xml) 功能需求 1.上方有标题(居中) 2.中间显示内容,内容随着下方控件而切换. 3.下方四个控件可切换. 实现页面展示: 共三大部分,顶部和底部一直不变,中间部分随着点击切 ...

  7. 关于Android模块化我有一些话不知当讲不当讲

    关于Android模块化我有一些话不知当讲不当讲 最近公司一个项目使用了模块化设计,本人参与其中的一个小模块开发,但是整体的设计并不是我架构设计的,开发半年有余,在此记录下来我的想法. 关于Andro ...

  8. android/iphone/windows/linux/微信声波通讯库

    声波通讯让传统的各种linux设备,单片机设备等等能编程的设备与智能手机之间有了数据传输的能力,这在智能家居.医疗设备.工业应用等各个行业有了大力应用的机会. 声波通讯让电脑与手机连通:电脑一般都有音 ...

  9. 微信分享功能android,关于Android实现简单的微信朋友圈分享功能

    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, android:name=".wxapi.WXEntryActivity" android:exported=&quo ...

最新文章

  1. Swift - AppDelegate.swift类中默认方法的介绍
  2. 库克踏春而来,小而美的 iPhone 全新配件问世
  3. 新型智能头盔可快速评估患者中风的大小、位置和类型
  4. linux模块化机制,Linux模块化机制和module_init
  5. 函数实现不放在头文件的原因,及何时可以放头文件的情况
  6. patator mysql 字典_利用patator进行子域名爆破
  7. javscript之数组(一)
  8. 【第1篇】Python爬虫实战-王者荣耀高清壁纸下载
  9. Undefined function 'adb' for input arguments of type 'double'.
  10. Python爬虫框架Scrapy报错:ModuleNotFoundError: No module named 'scrapy'
  11. arduino 实现时钟和计算器
  12. ios13 自带字体列表
  13. 业务安全之接口调用安全
  14. php实现图片加密,PHP实现支持加盐的图片加密解密.pdf
  15. IE无法打开链接的处理方法
  16. Python 程序员需要知道的 30 个技巧(转载)
  17. MIUI开发版内测资格?超详细教你刷入MIUI欧洲版ROM
  18. [GYCTF2020]Ez_Express
  19. 数学家对物理学家的鄙视_物理学家的未来经济学
  20. 潘多拉盒子 使用 hd-idle 硬盘休眠设置

热门文章

  1. 【Django】毕设学习笔记(六)
  2. linux系统 远程桌面连接到服务器,Ubuntu 14.04服务器远程桌面连接
  3. php 自己电脑运行内存,php 统计网页打开耗时和脚本运行内存
  4. abb机器人searchl报错_西门子PLC1200与ABB机器人通信
  5. mysql 数据增量备份_MySQL数据库之mysql全量备份、增量备份实现方法
  6. 设置eclipse自动生成的author等注释
  7. 10.Java 面试题整理(CORBA 方面)
  8. 微信小程序学习笔记02:微信小程序注册
  9. 无心剑中译阿齐姆·普雷姆吉《苦干加巧干》
  10. 禁止i5笔记本按Ctrl+Alt+向下键翻转屏幕