Module、Library、Jar 的理解:
我们新建module的时候,可以新建普通的module项目,默认的普通项目包含代码、资源可以编译成apk;同时,也可以新建library这种module,library不是自己来用的,主要是将独立的功能包装好,方便作为功能包提供给别的module用的,新建的时候,可以新建Android Library也可以新建Java or Kotlin Library,前者是安卓lib后者是javalib,安卓lib包含代码加资源文件,javalib只包含代码。
常听到的module、library、jar/aar。这三者的区别联系是,module可以编译成apk,将module阉割一部分让他不能编译apk后就变成了library,将library进一步压缩打包之后就变成jar/aar,其中Java or Kotlin Library不包含资源文件,压缩打包生成的就是jar(java archive),Android Library包含资源文件,压缩打包生成的是aar(android archive)
dependencies:依赖,当我们为了完成一个app新建model进行开发时,发现很多功能别人已经做过了,不需要我们重复造轮子,我们可以通过依赖已有的代码实现对应的功能。可以依赖已有的Module、也可以依赖已有的Library、也可以依赖已有的jar/aar。
Modules的建立:
Module:可以在AndroidStudio - File - New - New Module - Phone & Tablet Module 新建一个新的module
Library:可以在AndroidStudio - File - New - New Module - Android Library / Java or Kotlin Library 新建android Library或者java Library;也可以将已经存在的Module修改为Library,修改点:1.将Module的build.gradle中的 applicationId "com.xxxx.xxxx.xxxx" 这一行删掉,并且将 apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library';2.将Module的Manifest中的<manifest>和</manifest>标签中间的内容全部删除;3.其他模块引用这个Library时,如果模块和Library使用了引入了相同的包的不同版本,也会报错,需要保持一致,如Library中使用了implementation 'com.android.support:appcompat-v7:27.1.1'而模块中使用的是implementation 'com.android.support:appcompat-v7:30.1.1',需要把两个改为相同
jar / aar:无法直接新建,需要通过Library编译得到,Library编写好后,左键选中,工具栏Build - Make Module ' module名字',就可以编译出jar或者aar,生成的jar在模块目录build - libs下面,生成的aar在模块目录build - outputs - aar下面。也可以在gradle中配置task编译生成jar或者aar
Modeuls的依赖使用
主Module可以依赖别的library或者aar/jar都是可以的,依赖以后,就可以调用他们的接口和功能
依赖aar/jar:实际上是依赖本地jar/aar。1.添加包,将aar/jar复制粘贴到需要的module的libs目录下面,libs目录在src的同级目录;2.添加依赖,有两种方式添加依赖,第一种:工具栏File - Project Structrue - Dependencies - app - 加号 - Jar Dependency - 选择libs(或者libs下的具体的jar包,选择具体的就只依赖某一个)- OK;就将libs目录中的jar包全部添加到项目依赖了(选择libs或者libs下的具体的jar);第二种:在module的build.gradle - dependencies中添加implementation fileTree(dir: "libs", include: ["*.jar"]);其实第一种操作的结果就是软件帮忙实现第二种操作
依赖library:实际上是依赖远程library。依赖方式同依赖aar/jar,第一种:工具栏File - Project Structrue - Dependencies - app - 加号 - Library Dependency - 搜索相应的远程library(如搜索:org.greenrobot:eventbus:3.2.0 搜索需要技巧,好难,,,) - apply。第二种:直接在module的build.gradle - dependencies中添加implementation 'org.greenrobot:eventbus:3.2.0' ,结果也是一样的
依赖Module:实际上是依赖本地library,依赖方式同上,1.添加library,如复制粘贴到app的同级目录;2.添加依赖,,有两种方式添加依赖,第一种:工具栏File - Project Structrue - Dependencies - app - 加号 - Module Dependency - 选择app同级目录下的library - OK;第二种:直接在module的build.gradle - dependencies中添加,如 implementation project(path: ':customcontrollib')。