文档章节

关于组件化的最初步

DannyCoder
 DannyCoder
发布于 2018/10/20 00:51
字数 949
阅读 7
收藏 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
码字总数 36116
作品 0
广州
程序员
私信 提问
关于安卓项目架构相关集中管理module的一些思考整理(组件化参考)

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

HELLO丶GUY
2017/11/29
0
0
关于GloudGarden的工作分配和项目概述总结贴(实时更新)

Hi, Guys: 我这段时间考虑了一下工作的分配,初步设想如下: 李琦伟团队(李琦伟,邱少健)—— 负责项目架构的设计和搭建 邱少健团队(邱少健,学生2名)—— 负责前端开发的学习和设计 谷麦...

Kevin_Qiu
2015/03/02
3
1
Android组件化开发实践(八):组件生命周期如何实现自动注册管理

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

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

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

Realfighter
2015/03/04
0
0
网站页面优化(排版布局、间距、交互类)

我们有一个网站采用vue+elementui开发构建,开发模式前后端分离,已经初步完成页面开发、前后端接口及数据交互,现在需要对页面进行精细化(依据ui)的调整。主要包括页面的排版布局、间距、...

network2019
2017/09/14
4
4

没有更多内容

加载失败,请刷新页面

加载更多

layui弹窗滑动问题

问题:弹窗之后,父窗口总是滑动到顶部 思路:使用锚点的机制,实现关闭弹窗后滑动到锚点 ,end:function(){ ... if (location.hash== hash) { location.hash = ''; }...

关元
16分钟前
0
0
presto函数

CASE CASE expression WHEN value THEN result [ WHEN ... ] [ ELSE result ]ENDSELECT a, CASE a WHEN 1 THEN 'one' WHEN 2 THEN 't......

hutaishi
24分钟前
0
0
.git目录瘦身

瘦身过程如下: 1.复制两个最新版本 git clone ssh://git@host:port/project.git dir1/project dir2/project 2.对dir1目录的工程进行瘦身 删除所有非python文件以及其记录,并提交. git filte...

legend3
28分钟前
1
0
Debian pip3 ImportError: cannot import name 'IncompleteRead'错误解决

突然pip3不能正常使用了, 执行pip3 -V报错为如下: 瞬间崩溃,翻阅一些资料给出的解决方案均是 easy_install3 -U pip3 修复,试后仍然无法解决,随换另一种方法,重新安装pip3: apt-get re...

Sunki
30分钟前
2
0
Springboot Failed to parse configuration class [x]; nested exception

1.前言 在使用Springboot时,我们偶尔会单独引用一些特定的properties文件,在引用这些文件时,我们就应用到了注解:@PropertySource。 2.分析错误信息 Caused by: org.springframework.bea...

hengbao5
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部