Android Studio 多模块开发模式,Module开发
本文纯菜鸟笔记,共4个模块
- 一、模块类型1:
Appcation Module
, - 二、模块类型2:
android library Module
- 三、模块类型3:
java library Module
- 四、总结
前言
- 模块(
Module
)是什么,和App同级,App本身就是个模块,编译之后的文件比如:apk、aar、jar等; - 模块的使用,可以实现多人同步开发,异步开发等优点;
- 在新项目建立时,分成多个模块多点同时进行,互不干扰;
- 添加成熟的库模块,只需要操作库模块开发的API接口,相同的功能不必再重写一遍,哪怕复制粘贴也是低效率。引入库模块,效率提升。。。而且很nice的方式开源。。。
- 这里只讨论本地项目下新建的模块,如图标出的三中类型的
Module
; - 添加模块步骤:打开下图路径:
File-->new-->new Module...
,选择,点击Next,命名,finish创建。查看:项目文件在Android模式下,可以看到APP文件下方多了一个文件夹。 .
一、模块类型1:Appcation Module
创建、选择创建上图中的:Phone &Tablet Module
,这里命名为:myapplication
- 选择此Module,是因为这是个手机客户端的项目,如果是其他类型的项目选其他Module.
- Appcation Moudule其实本身是个结构完整的App,有自己的application,一个应用不能存在两个application,所以在这里要通过些许改动设置成库才能被App调用。
- 、配置build.gradle,注意每个Moudle有自己的build.gradle区分后缀,build.grale(Module:myappcation)下改2处,build.grale(Module:app)下改1处,Manifest.xml该1处;
build.grale(Module:myappcation)
改2处,作用为声明为library库
- 1处、apply plugin:‘com.android.application’:
application
改为library'
- 2处、注释或删除掉:
applicationId "com.example.myapplication"
- 3处、
build.gradle(Module:app)
添加库依赖,作用为App添加myapplicaion库
compile project(':myapplication')
- 4处、
Manifest.xml
下,删掉活动启动设置,即只声明活动不需要设置活动启动页,一般为MainActivity,
//把以下四行都删除
//<intent-filter>
//<action android:name="android.intent.action.MAIN" />
//<category android:name="android.intent.category.LAUNCHER" />
//</intent-filter>
Appcation Module调试与发布:因为其本身就是一个可以独立运行的app,开发的过程,可以独立以app进行调试,当要被主项目以library的方式调用时,需要像上面步骤修改。如果两种情况切换次数比较多时改来该去是很麻烦的,可以使用定义值的方法判断切换。
二、模块类型2:android library Module
顾名思义,这已经是个library库,所以App直接依赖引用可以了
添加库依赖
compile project(':mylibrary')
三、模块类型3:java library Module
顾名思义,这已经是个library库,所以App直接依赖引用可以了
添加库依赖
compile project(':mylib')
四、jar与aar
- jar是历史悠久的文件,纯java,不带任何资源文件,android 以外的java应用也可以使用;
- aar是专门为android而生的文件,里面包含java文件和资源文件,manifest,xml,图片等,可以为andriod 直接调用;
- 照前面例举的三个模块操作编译后 ,Appcation Module 和 android library Module分别生成
aar
文件, java library Module生成jar
文件,当我们要在其他项目引用这两种文件时,可以用接下来的操作将其添加到项目中来。
jar的引用:
直接复制jar包,拷贝到新建的项目的app/libs下,然后右键–>选择add as library
–>就可以了,build.gradle会自己添加一行本地依赖,如:compile files(‘libs/mylib.jar’)
aar的引用:
也是复制aar包,拷贝到新建的项目的app/libs下,然后修改build.gradle:
添加:
repositories {
flatDir {
dirs 'libs'
}
}
添加依赖:
compile(name:'mylibrary-release',ext:'aar') //mylibrary-release为包名
本项目创建的模块原文件的使用,和该模块成aar或jar后的使用是完全一样的,主项目可以不用改。
五、总结
三种类型的模块,在编译后分别生成不同的文件,
- application Module 编译后自然是apk或aar,
- android library Module 编译后是aar,
- java library Module 编译后是jar,
具体模块内部的构建,就和单模块App编写一样了,开放的接口做好注释和文档记录。一般模块都建议往小写,功能单一点,关键是要可靠性高,严谨。同时也希望,开源是好,但有问题的库,还是不要开源,博客写写论坛讨论讨论更好,高手用不着,害苦的是菜鸟本鸟。。。