一、前期基础知识储备
(1)Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日在Google I/O上发布,可供开发者免费使用。2013年5月发布早期预览版本,版本号为0.1。2014年6月发布0.8版本,至此进入beta阶段。第一个稳定版本1.0于2014年12月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文件配置相关的: