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

插件详解:
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相关推荐

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

    微信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. java应用窗口大小_java 如何让程序窗口随屏幕大小改变 | 学步园
  2. Linux 学习记录 四(Bash 和 Shell scirpt).
  3. 10月份个人技术指标
  4. Linux环境下安装PHP的memced扩展
  5. 「Python-Pycharm」zipimport.ZipImportError: can‘t decompress data; zlib not available
  6. js模板引擎——art Template
  7. 09 / LiveVideoStack主编观察:有趣的灵魂是一面镜子
  8. AIDL Service,跨进程调用Services
  9. LeetCode 764. 最大加号标志(DP)
  10. fleaPHP框架的一些基础问题
  11. 20180514-A · Star Wars Survey · ggplot2 ggdraw geom_bar facet_grid magick 柱状图 条形图 · R 语言数据可视化 案例 源码
  12. 24AA512/24LC512/24FC512系列器件中文翻译
  13. WebStorm之如何清除缓存
  14. html入住登记源码,酒店客户入住登记管理系统设计与实现.doc
  15. C语言入门(一)——程序的基本概念
  16. SV绿皮书笔记(八)
  17. [04]Web前端进阶—JS伪数组
  18. Java 校验注解的使用、自定义校验注解
  19. 七牛云绑定阿里云域名
  20. ML—广义线性模型导论

热门文章

  1. leetcode 368
  2. 5-5array统计tcp连接状态数量
  3. C# 将PDF转为SVG的3种情况
  4. 在Linux上使用的10种云备份方案
  5. Sharepoint2010 表单认证常见问题
  6. 二分法在生活中的一次应用
  7. flutter安装教程(win7)
  8. mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误
  9. 《数据库系统概念》20-恢复系统
  10. Linux下编译安装qemu和libvirt