Android应用开发之组件化开发
白羽 2018-07-17 来源 :网络 阅读 994 评论 0

摘要:本文将带你了解Android应用开发之组件化开发,希望本文对大家学Android有所帮助。

什么要组件化开发?

看一下普通项目的结构 , 一个项目下有多个Module(左侧图黑体目录),但是只有一个application,0个或多个library(在每个medel下的build.gradle文件下可以看到)。

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'


这样架构的缺点:
1、每一次编译都是编译整个项目,项目大的时候编译几分钟几分钟的浪费
2、业务集中,修改一处可能需要注意别处会影响的部分,需要开发人员都尽可能的熟悉整个项目代码。

组件化开发即:
开发期间(组件模式),将每一个Module都作为一个application , 使其可以单独编译,运行。
发布时(集成模式),只留一个application(app壳) , 其他的Module都作为library。

组件化的优点:
1、加快编译效率,单个组件可以单独编译,运行,不需要再每次都编译运行整个项目,大大减少开发时间。
2、降低开发成员熟悉项目的成本,只需要熟悉负责模块的代码即可,不需要熟悉整个项目的代码。
3、控制代码权限,开发人员只可以控制部分模块的代码,不会影响到他人的代码,提高整体开发效率。
4、组件模式中,各个组件基本是相互独立的。

如何组件化开发?
一、组件模式和集成模式的转换

首先,Module分为两种类型:

1、application属性,可以独立运行的Android程序,通常是默认创建的app

apply plugin: ‘com.android.application’

2、library属性,不可以独立运行,一般是Android程序依赖的库文件

apply plugin: ‘com.android.library’这两种类型可以在各个Module里面的build.gradle 文件中设置


很显然,当组合模式开发的时候,每个组件设为application,集成模式的时候,只留一个application,其他都为library。
方式知道了,接下来实现,当很少的每个组件的时候,我们可以手动控制每一个每个组件的类型,但是多了的情况下就显得很麻烦了。
解决方式就是使用项目根目录下的gradle.properties文件,因为项目中所有的build.gradle文件都可以获取gradle.properties的常量,所以只需要写一个参数,例如:isModule = false (注意的是gradle.properties中所有的数据类型都是String)
接下来除了壳组件的其他所有build.gradle里面只需要根据这个参数来控制类型即可:

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


经过上面的流程我们就可以很轻松的控制项目当前是集成模式还是组件模式。

二、AndroidManifest合并问题
相对于application和library对应的AndroidManifest文件内容是不同的,所以每一个组件需要根据当前是集成模式还是组件模式来动态的更换对应模式下的AndroidManifest.xml文件
所以我们只需给除了壳(一般是app目录)以外的其他组件的目录下再添加一个AndroidManifest.xml 文件 ?该文件写成 application对应的内容即可。
举例:
我们可以在组件目录下的main下添加一个module文件夹,添加一个application对应的AndroidManifest.xml

这样对于一个组件,就有两个AndroidManifest.xml 文件了,一个内容对应application ,一个内容对应library
接下来只需要和切换集成模式和组件模式一样,动态控制用哪一个即可。
在组件下的build.gradle下添加代码:

  sourceSets {
        main {
            if (isModule.toBoolean()) {
                manifest.srcFile 'src/main/module/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }
        }
    }


 注意application和library的AndroidManifest.xml 内容:
application下的:


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程