Android Studio的Module/Projeck的概念

简介

Project相当于eclipse里面的工作区间,module相当于其project。module可以作为狭义上的模块,就是可以多个app公用的module,如果新建module就会看到不止有phone module这个项,还有其他的库什么的。

application的module的有一个手机图标

个人理解:project是应用的样式,module是应用里面的具体模块。

Module的新建

《Android Studio的Module/Projeck的概念》 image.png

Module目录结构

《Android Studio的Module/Projeck的概念》 image.png

 目录文件   作用

build   module编译时所生成文件的目录

lib 第三方依赖库所在目录

src module源码所在目录

src\andrroidTest    android Studio生成的测试模块,可删除

src\main    module代码目录,结构和Eclipse中的差不多了

src\test    单元测试模块,可删除

.gitignore  module中的git管理文件

app.iml module中的IDEA 项目文件

build.gradle    module自动编译的配置文件

proguard-rules.pro  module代码混淆配置文件

module/build目录

module的编译文件目录,编译中生成的中间文件就在这里

《Android Studio的Module/Projeck的概念》 image.png

我们编译最终生成的apk就在build/outputs/apk目录下,里面包含了app-debug.apk, app-debug-unaligned.apk,app-release-unaligned.apk三种apk, 另外app-release.apk是生成在module的根目录下。

lib目录

第三方库存放目录,我们可以把需要的第三方库jar文件放到这里,*.so也同样放在这里。可以在Project Structure中管理它的依赖关系,也可以在build.gradle中直接修改。

src目录

module源码目录,我们工作的主要地方

.gitignore文件

module模块的git管理文件,可对module单独管理。

app.iml文件

同Project中的*.iml一样。管理module的配置

build.gradle文件

这个文件是Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件。

《Android Studio的Module/Projeck的概念》 image.png
《Android Studio的Module/Projeck的概念》 image.png

proguard-rules.pro文件

module中的代码混淆配置文件,使用方式和Eclipse中一样。在build.gradle中设置片断用来启用混淆。

创建

选择第一个,手机和平板都可以使用的模块,第一个新建的module默认为app。

《Android Studio的Module/Projeck的概念》 image.png

新建一个module做为library

《Android Studio的Module/Projeck的概念》 image.png
《Android Studio的Module/Projeck的概念》 image.png

library/build/outputs下有个arr文件夹,里面存放这该模块的arr压缩文件,而MyApplication2项目的app/build/outputs下没有arr,只有apk文件夹,看到apk文件瞬间也就了解两者的区别了。
arr与java的jar类似,只是google为了封装一些具有android特性的文件(例如xml配置文件、资源文件等)而创建的压缩类型

《Android Studio的Module/Projeck的概念》 image.png
《Android Studio的Module/Projeck的概念》 image.png

上图中,右键选中app,选择“Open Module Settings”,弹出如下界面

《Android Studio的Module/Projeck的概念》 image.png

依赖成功

《Android Studio的Module/Projeck的概念》 image.png
《Android Studio的Module/Projeck的概念》 image.png

新建一个module形式的第三方library的通用做法是

(1)新建一个library形式的module,删掉这个module中src/main目录里面的所有文件(包括删掉java、res、AndroidManifest.xml)

(2)复制第三方库的AndroidMainfest.xml、res、src文件(夹)到库目录的src/main目录中

(3)将src/main目录下的src目录重命名(Shift+F6)为java

(4)删除库module中的build.gradle文件(注意不要修改错了地方)中的dependencies和release模块

Module的删除

点击箭头处的减号,就可以删掉了。同时我们要去掉module对其他module的依赖

《Android Studio的Module/Projeck的概念》 image.png

然后会发现,StickyScrollView这个module的图标消失了,可以删除,而且是从硬盘上直接delete掉。

《Android Studio的Module/Projeck的概念》 image.png

Project的目录

《Android Studio的Module/Projeck的概念》 image.png

目录文件    作用

.gradle gradle项目产生文件夹(自动编译工具产生的文件)

.idea   IDEA项目文件夹(开发工具产生的文件)

app module模块

build   构建时生成文件的地方

gradle  gradle环境支持文件夹

.gitignore  git源码管理文件

build.gradle    gradle项目自动编译的配置文件

gradle.properties   gradle运行环境配置文件

gradlew 自动完成 gradle 环境的linux mac 脚本,配合gradle 文件夹使用

gradlew.bat 自动完成 gradle 环境的windows 脚本,配合gradle 文件夹使用

local.properties    Android SDK NDK 环境路径配置

MyApplication.iml   IDEA 项目文件

setting.gradle  gradle 项目的子项目包含文件

.gradle目录

《Android Studio的Module/Projeck的概念》 image.png

gradle 运行时自动生成的目录,一般情况不做修改,不需要纳入项目源代码管理中。

.idea目录

《Android Studio的Module/Projeck的概念》 image.png

Intellij IDEA 运行时候生成的文件目录,一般情况不做修改,不需要纳入项目源代码管理中。
Intellij IDEA是JetBrains公司推出的Java集成开发环境,Android Studio是基于IDEA Commutity Edition开发的,Community 版本不仅是免费的而且是开源的。

module(app)

《Android Studio的Module/Projeck的概念》 image.png

每一个module可看成在Eclipse中的一个Project,里面的文件结构与父类差不多。里面也能包含build.gradle、gradle.properties、setting.gradle 等相关gradle文件,若没有定义,则在项目中使用父类的设置。

build目录

《Android Studio的Module/Projeck的概念》 image.png

编译时产生文件,不需要修改,也不需要纳入项目源代码管理中

gradle目录

《Android Studio的Module/Projeck的概念》 image.png

可以看到里面wrapper目录下有两个文件,里面有一些项目对gradle的配置信息,我们来看下gradle-wrapper.properties里的内容

《Android Studio的Module/Projeck的概念》 image.png

可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本

.gitignore文件

git对项目文件管理,可以在里面添加你不希望纳入git管理的文件

《Android Studio的Module/Projeck的概念》 image.png

Android Studio已经自动帮我们添加了一些不需要的文件,也可以按照同样的格式来加入自己的文件。

build.gradle文件

项目的编译环境配置,可以说是Gradle最主要的配置文件。

《Android Studio的Module/Projeck的概念》 image.png

这里是对Project的配置,是最顶层的配置,在module中同样有一个build.gradle文件,是对module的配置,如果module里没有进行配置,将使用这里的配置信息。一个是声明仓库的源,这里可以看到是指明的jcenter(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。

gradle.properties文件

配置gradle运行环境的文件,比如配置gradle运行模式,运行时jvm虚拟机的大小。在创建的项目中,暂时是没有内容的。

《Android Studio的Module/Projeck的概念》 image.png

gradlew & gradlew.bat 文件

分别是linux下的shell脚本和windows下的批处理文件,它们的作用是根据gradle-wrapper.properties文件中的distributionUrl下载对应的gradle版本。这样就可以保证在不同的环境下构建时都是使用的统一版本的gradle,即使该环境没有安装gradle也可以,因为gradle wrapper会自动下载对应的gradle版本。

《Android Studio的Module/Projeck的概念》 image.png

local.properties文件

配置android NDK,SDK的地方,非android项目可能没有这个文件,这个路径根据不同想电脑不同

《Android Studio的Module/Projeck的概念》 image.png

MyApplication.iml文件

编译项目时生成的文件,其名为‘项目名.iml’,iml文件是Android Studio识别项目的配置文件,跟Eclipse里面的.project文件作用类似。

《Android Studio的Module/Projeck的概念》 image.png

setting.gradle文件

声明当前项目中含有什么module。如果有多个module会以‘,’分开,如:include ‘:app’, ‘:app2’

《Android Studio的Module/Projeck的概念》 image.png

    原文作者:我为峰2014
    原文地址: https://www.jianshu.com/p/e861b759bf18
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞