文档章节

关于组件化的最初步

DannyCoder
 DannyCoder
发布于 10/20 00:51
字数 949
阅读 6
收藏 0

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。

而对于工程的开发,比如以前的公司,分成了有三大块业务,一个是听、一个是看、一个是唱,我们可能会各自分成不同的小组去做各自功能的开发,然后再把三块的业务整合到一起打包,这个就是不也涉及到了app的组件化分块开发。针对这个需求,我有点好奇,了解了下市面上的组件化开发,大部分是使用到的是阿里开源的ARoute框架,加上基于gradle的dsl的构建,来满足越来越差异化的对于我们开发成员按模块进行分组开发的需求。针对以前公司因为没具体接触到,具体不详。这儿只针对对于jimu的开源,感谢它的开源,让我们可以了解更多的世界。

       而这儿主要是想先涉及到到首先是gradle的构建,如何让模块可以单独运行而不需要去从编译- 构建 运行整个工程而看到自己想要实现的一部分呢?

     这儿我们可以先从我们android studio工程目录的一个文件说起,gradle.properties说起

在Android Studio 创建一个项目的时候,rootProject下面会生成gradle.properties和local.properties文件

properties其实是Java项目中的配置文件,不是Gradle独创的。又因为Gradle语法可以和Java进行混合使用,所以在Java项目上面使用properties文件的方式,在Gradle上面也可以使用。 
Gradle借用了这一点,所以内置了对gradle.properties的使用方式

properties的数据格式

properties里面的数据格式采用键值对的方式,大概有以下几种写法: 
1. key=value 
2. key:value 
3. key :value 
4. # 作为注释 

 基于这个配置文件,我们就可以对其做些我们自己需要做的配置,比如上面配置文件我们定义多了一个变量,isRunAlone,是否可以单独运行,这个是后面可能会用到的一个变量,也是我们可以基于这个条件去做判断,是否当前module是可以单独运行,更改其值,重新同步下,就可以获取,接着看我们的定义的build.gradle文件

if(isRunAlone.toBoolean()){
    apply plugin: 'com.android.library'
}else{
    apply plugin: 'com.android.application'
}

这儿是定义给可能我们模块会给其他模块用到,针对gradle.properties的修改其值,我们就可以做到先最简单的对于module的单独可以运行的条件了。

暂时先写到这儿,其实这儿每次需要修改值和同步是个耗费时间的工程,后面其实我们可以针对proerties的是否单独运行isRunAlone可以为其又做一层封装,也是最近开始研究的基于groovy的gradle插件的创建,对其进行判断,然后使用这个插件我们可以做到只要配置这个插件我们就可以在选择我们对应的module和一些参数值,就可以自动的运行我们想要得到的结果,是不听起来更强大了。

 

 

© 著作权归作者所有

共有 人打赏支持
DannyCoder
粉丝 2
博文 68
码字总数 36018
作品 0
广州
程序员
私信 提问
关于安卓项目架构相关集中管理module的一些思考整理(组件化参考)

前言 架构,把这个词拆开来看,就是架子与结构。可以形象的比喻成动物的骨架。骨架完成了在填充血肉,会让整个项目进行的更有效。 在此之前,需要开发者了解一些gradle在安卓项目中的使用情况...

HELLO丶GUY
2017/11/29
0
0
Android组件化开发实践(八):组件生命周期如何实现自动注册管理

1. 前言 前面有一章讲过组件生命周期管理,参见Android组件化开发实践(五):组件生命周期管理。之前只是为了讲解组件生命周期的概念,以及这样做的原因,但是这样实施过程中,会发现在壳工...

云之崖
10/25
0
0
Android必备:Activity 活动 和 Intent 意图 的学习整理

看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的了解与学习中,对AndroidUI做了初步的了解和学习,本篇继续进行Android开发学习的整理。And...

Realfighter
2015/03/04
0
0
物理坏区与逻辑坏区

落笔之前倒觉得这像是报错代码的前传,在判定硬盘故障时(物理坏区还是逻辑坏区),第一步就要硬盘体检,通过体检结果分类损伤类别,再由损伤类别对症下药。 通过初步体检分出两种损伤:硬伤...

EST云修复
2017/05/26
0
0
iView 发布 1.0 正式版,43 个 UI 组件助力中后台业务开发

时隔半年多,iView 终于迎来了它的第一个正式版本 1.0.0,到目前版本,已经有 43 个常用 UI 组件,从功能和设计上,是最接近 Ant.Design 的 Vue.js 实现。 关于 iView 1.0 GitHub 地址:git...

Aresn
10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
6
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部