博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android模块化之MicroModule(微信Pins工程)
阅读量:5973 次
发布时间:2019-06-19

本文共 1656 字,大约阅读时间需要 5 分钟。

微信Pins工程

相信你看过微信关于模块化的分享,也注意到里面提到的pins工程结构。

pins工程

作者是这样描述的 ------“pins工程能在module之内再次构建完整的多子工程结构,通过project.properties来指定编译依赖关系。通过依赖关系在编译时找到所有的资源和源码路径。”

仔细推敲这句话的意思,应该能知道它实现的基本原理------通过设置sourceSets指定多个java、res等路径.

有关sourceSets的介绍:

但是,有一个问题需要要知道的是,一个module只能指定一个AndroidManifest文件,pins工程中包含了多个AndroidManifest,它是怎么做到的?

研究过com.android.tools.build:gradle,会留意到它使用到一个子库com.android.tools.build:manifest-merger,官方通过这个库来合并多个AndroidManifest文件,或许pins工程也是用了这方式。

接下来,再它的基础上,我做的一些改动,取了另一个名字叫 MicroModule,先来看一下工程结构:

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

插件详解:

插件项目地址:

最后

MicroModule已经上传至Github,欢迎star交流。

转载地址:http://hudox.baihongyu.com/

你可能感兴趣的文章
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
maya pyside 多个窗口实例 报错 解决
查看>>
我的友情链接
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
unix 环境高级编程
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>
第一次作业-准备篇
查看>>
day-6 and day-7:面向对象
查看>>
CSU Double Shortest Paths 湖南省第十届省赛
查看>>
webgl像机世界
查看>>