Android Studio项目结构
一、project目录结构
1. .gradle和.idea
这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。
2. app
项目中的代码、资源等内容都放置在这个目录下。
3. build
包含在编译时自动生成的文件。
4. gradle
这个目录包含了gradle wrapper的配置文件,其中的.properties文件中的distributionUrl表示整个项目的gradle版本。使用gradle wrapper会根据本地(Service directory path)是否有缓存,来决定是否要联网下载gradle。(也可以不使用gradle wrapper的方式直接指定项目要使用的gradle版本,可以选择setting-gradle中的user local gradle distribution)。
5. gitgnore
指定目录或文件排除在git版本控制之外的。
6. build.gradle
project的gradle构建脚本。
7. gradle.properties
全局gradle配置文件,这里配置的属性将会影响项目中所有的gradle。
8. gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
9. local.properties
用来指定本机的Android SDK路径。
10 .MyApplication.iml
iml文件是所有InteliJ IDEA项目的标示文件。
11. setting.gradle
用来指定项目中引入的Moudle(模块)。
二、app目录结构
1. build
编译后生成的文件,包括APK文件。
2. libs
第三方jar包存放的目录,放在这个目录下的jar包都会被自动添加到构建路径里去。
3. androidTest
此处用来编写Android Test测试用例。
4. java
存放java代码的地方。
5. res
项目中使用的图片,布局,字符串等资源文件分类存放的地方。
6. AndroidManifest.xml
Module(当前是app)的配置文件,包括四大组件的定义和权限声明。
7. test
此处用来编写Unit Test测试用例。
8. gitgnore
指定目录或文件排除在git版本控制之外的。
9. app.iml
iml文件是所有InteliJ IDEA项目的标示文件。
10. build.gradle
Module(当前是app)的gradle构建脚本。
11. proguard-rules.pro
项目代码的混淆规则。
Android Studio中的build.gradle
1.Project目录下的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
buildscript闭包表示的是gradle本身构建项目所需要的配置,包括repositories闭包中的代码托管库jcenter()和dependencies中的gradle插件。
allprojects闭包中的repositories表示的是Project中的所有Module中的gradle可以使用代码托管库jcenter中的开源项目依赖。
2.Module目录下的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "application.myapplication"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
}
apply plugin:" "中有两种声明,当双引号中间是com.android.application表示这是一个应用程序模块,当是com.android.library表示这是一个库模块。
compileSdkVersion指定项目的编译SDK的版本。
buildToolsViersion指定项目的构建工具的版本。
applicationId指定项目的包名。
minSdkVersion指定项目最低兼容的Android系统。
targetSdkVersion指定你在该版本上已经做过充分的测试,系统将会为你的应用程序启用一些最新的功能和特性。
versionCode和versionName指定项目的版本号和版本名。
buildType闭包指定生成APK文件的相关配置,通常有两个子闭包,一个是debug,一个是release。debug闭包指定生成测试版APK文件的配置,release指定生成正式版APK文件的配置。子闭包中的minifyEnabled用于指定是否对项目代码进行混淆,true表示混淆,false表示不混淆,proguardFiles用于指定混淆时使用的规则文件,指定了两个文件,第一个proguard-android.txt是Android SDK/tools/proguard目录下的,所有项目通用的混淆规则,第二个proguard-rules.pro是在当前Module特有的混淆文件。
dependencies闭包指定当前项目的所有依赖关系,共三种依赖方式:本地依赖,库依赖和远程依赖。本地依赖。本地依赖可以对本地jar包或目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖可以对jcenter库上的开源项目添加依赖关系。