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编写一样了,开放的接口做好注释和文档记录。一般模块都建议往小写,功能单一点,关键是要可靠性高,严谨。同时也希望,开源是好,但有问题的库,还是不要开源,博客写写论坛讨论讨论更好,高手用不着,害苦的是菜鸟本鸟。。。