Android Studio 工程目录结构精炼详解

一、前期基础知识储备

(1)Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日在Google I/O上发布,可供开发者免费使用。2013年5月发布早期预览版本,版本号为0.1。2014年6月发布0.8版本,至此进入beta阶段。第一个稳定版本1.0于201412月8日发布。

Android Studio基于JetBrainsIntelliJ IDEA,为Android开发特殊定制,并在Windows、OS X和Linux平台上均可运行

2017年,11月20日发布最新的稳定版本3.0.1.

 

(2)Gradle,一个丰富的可扩展的基于Groovy的领域特定语言(DSL),简而言之,Gradle是一个开源的构建工具,Android Studio使用它来构建项目。

初次使用Android Studio时时间会比较长,主要就是它会自动去下载Gradle,我们从Github上导入别人的项目时,最关键的检查地方也是Gradle版本是否对应上,如果要求的Gradle版本我们Android Studio上已经有了,那么开启项目就会比较快,如果检查发现,没有的话,我们自己手动去Gradle官网上下载,然后使用这样会比较快。

通常Gradle默认的放置路径是:

C:\Users\Administrator\.gradle\wrapper\dists

在了解这些前期基础知识之后,我们来具体看一下Android Studio中的工程目录结构,Android Studio默认的目录与Eclipse中有所不同,Android Studio中的Project相当于Eclipse的WorkPlace,而Android Studio的Module相当于Eclipse的Project

那么下面的分析就将从Android Studio的Project和Module两方面入手。

二、Android Studio中Project目录结构

    

目录文件

作用

.gradle

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

.idea

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

app

module模块

build

构建时生成文件的地方

captures

捕获系统信息的日志目录

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 环境路径配置

setting.gradle

gradle 项目的子项目包含文件

Test.iml

IDEA 项目文件

.gradle目录

 

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

.idea目录

Intellij IDEA 运行时候生成的文件目录,一般情况不做修改,不需要纳入项目源代码管理中。

module(app)


每一个module可看成在Eclipse中的一个Project,里面的文件结构与父类差不多。里面也能包含build.gradle等相关gradle文件,若没有定义,则在项目中使用父类的设置。这里注意app目录下的output文件夹,里面包含我们需要的apk文件。更多的内容,后面再详细介绍了。

另外,为了说明Android Studio下的Project与Module的关系,这里选取了一个包含两个Module的Project,可以看到app(默认构建)和color_effect是该Project下的两个Module,都可以单独跑起来,注意其文件夹上面的手机符号。

build目录

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

gradle目录

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

可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本。默认的路径我们一般不会更改,前文开篇中说明的导入Github等第三方项目时需要重点关注的地方就是这个文件中申明的Gradle版本,看Android Studio中是否含有。

.gitignore文件

git对项目文件管理,可以在里面添加你不希望纳入git管理的文件。看一下里面的内容

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

build.gradle文件

项目的编译环境配置,可以说是Gradle最主要的配置文件。先来看下里面的内容:

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

gradle.properties文件

配置gradle运行环境的文件,比如配置gradle运行模式,运行时jvm虚拟机的大小。

gradlew & gradlew.bat 文件

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

local.properties文件

配置android NDK,SDK的地方,非android项目可能没有这个文件,这个路径根据不同想电脑不同,一般也不会纳入源代码管理之中。

setting.gradle文件

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

Custom_Camera.iml文件

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

三、Android Studio下Module目录结构

 

目录文件

作用

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代码混淆配置文件

build目录

module的编译文件目录,编译中生成的中间文件就在这里。我们编译最终生成的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配置文件。它的内容比较复杂,我们先来看一下:

// 这句是gradle版本的写法,声明是这是一个Android程序。
apply plugin: 'com.android.application'

android {
    // 编译android的sdk版本
    compileSdkVersion 23
    // build tools的版本
    buildToolsVersion "27.0.3"

    defaultConfig {
	//  应用的包名
        applicationId "com.example.administrator.custom_camera"
	// 允许的最少版本
        minSdkVersion 19
	// 目标版本
        targetSdkVersion 23
	// apk的版本
        versionCode 1
	// apk的显示版本
        versionName "1.0"
    }
    buildTypes {
	// 表明是在release版本中使用的配置
        release {
	    // 是否运行混淆
            minifyEnabled false
	    // 混淆的配置文件路径,默认给了我们两个配置文件。
            // proguard-android.txt在<sdk目录>/tools/proguard下面,里面已经包含了基本的混淆声明。
            // proguard-rules.pro是在module根目录下面,我们可以根据项目去添加。
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
// 表明是依赖库配置
dependencies {
    // 表明依赖libs目录下的所有jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // 表明在编译项目的测试代码时依赖
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

proguard-rules.pro文件

module中的代码混淆配置文件,使用方式和Eclipse中一样。我们在build.gradle中可以看到如下片断用来启用混淆。

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


注意,项目Project的末尾有一个External Libraries,注意,这不是一个文件夹,只是依赖lib文件,如SDK等。



最后总结一下Gradle文件配置相关的:



猜你喜欢

转载自blog.csdn.net/weixin_41101173/article/details/80148758