Android Studio 项目目录结构简析
简单分析一下使用Android Studio创建项目后,项目目录内各部分的作用
首先创建一个新的MyAppliction项目(使用版本为Android Studio 3.3 Canary 3)
默认的结构为Android模式的项目结构,是经过转换过的,结构简洁明了,适合快速开发。
点击左上角的Android切换成Project模式
Project模式
这个模式反映的就是Android项目的真实结构了。
现在从外向内切入。
一、外层结构
1. .gradle和.idea
目录下是Android Studio 自动创建的一些文件
2. app
项目内代码、资源均存放在这个目录下。
3. gradle
包含gradle wrapper 配置文件,使用gradle wrapper的方式不需要提前下载gradle,而是会根据本地的缓存情况来判断是否需要进行下载。
4. .gitignore
用来记录特定的目录或文件来排除在版本控制之外,具体参考Git
5. bulid.gradle
全局的gradle构建脚本,通常不需要进行修改。
6. gradle.properties
全局gradle配置文件,其中的属性会影响项目中所有gradle编译脚本。
7. gradlew和gradlew.bat
用来在命令行中执行gradle命令,前者在Linux或Mac中使用,后者在windows中使用。
8. local.properties
用于指定本机中的Android SDK路径
9. MyApplication.iml
用于标识Intellij IDEA 项目
10. setting.gradle
用于指定项目中所有引入的模块。
二、app目录内结构
1. build
编译时生成的文件
2. libs
使用第三方jar包时直接添加入该目录下,jar包会自动地被添加进构建路径里。
3. src
项目的主要代码和资源所在。
4. androidTest
用来编写Android Test测试用例,可以对项目进行一些自动化测试。
5. main
存放所有Java代码,可以构建子目录来规范管理代码
6. res
几乎是所有的资源都存放在这里,每个文件夹都有自己的功用。比如drawable内存放图片文件,layout为所有的布局xml文件,
7. AndroidManifest.xml
当前Android项目的配置文件,程序中定义的四大组件都在其中进行注册,以及程序的权限声明。
8. test
用来编写Unit Test测试用例
9. .gitignore
用于版本控制
10. app.iml
用于标识Intellij IDEA 项目
11. build.gradle
内层build.gradle为app模块内的gradle构建脚本,会指定项目构建相关配置。
android {
compileSdkVersion 28
buildToolsVersion "28.0.1"
defaultConfig {
applicationId "com.example.a40136.myapplication"
minSdkVersion 26
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
}
compileSdkVersion : 指定项目的编译版本
buildToolsVersion : 指定项目构建工具的版本
applicationId : 项目的包名
minSdkVersion : 指定最低兼容的Android版本
targetSdkVersion : 表示在该目标版本已经完成了充分的测试
versionCode : 项目的版本号
versionName : 项目的版本名
12. proguard-rules.pro
用于指定项目代码的混淆规则,防止项目完成后生成的安装包文件被人破解。