Android Studio(AS)中Android项目的文件结构有多种表现形式及视图,Android视图是AS的默认视图。Project视图是开发人员使用的视图。Android视图中会缺少很多文件,有些文件夹会被AS替换显示。Project视图中的文件结构就是项目此磁盘上的真实文件结构。
项目结构
.gradle
目录与.idea
目录AS自动生成的文件,无需手动编辑。gradle
Gradle类似PHP的Composer即依赖包存放目录
gradle
目录下包含gradle wrapper
的配置文件,使用gradle wrapper
的方式无需提前将gradle
下载会,它会根据本地缓存决定是否联网下载gradle
。
AS默认没有启用gradle wrapper
的方式,打开方式为【导航栏】>【File】>【Settings】>【Build,Execution,Deployment】>【Gradle】中进行配置。
-
build.gradle
文件是项目全局的Gradle构建脚本
$ vim build.gradle
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
}
}
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
repositories
闭包中声明了jcenter()
配置,jcenter
是一个代码托管仓库 https://jcenter.bintray.com/,多数Android开源项目会选择将代码托管到jcenter
上,声明后可在项目中引用任何jcenter
上的开源项目。
dependencies
闭包中使用classpath
声明了Gradle插件,由于Gradle并非专门为构建Android项目而开发的,Java、C++等多种项目都可以使用Gradle来构建。如果需要使用Gradle构建项目则需要声明它的类文件路径。
-
gradle.properties
文件是全局的Gradle配置文件,该文件配置的属性将会影响到项目中所有的Gradle编译脚本。
$ vim gradle.properties
systemProp.http.proxyHost=mirrors.neusoft.edu.cn
org.gradle.jvmargs=-Xmx1536m
systemProp.http.proxyPort=80
-
settings.gradle
文件用于指定项目中所有引入的模块,如果项目中只有一个默认的app
模块,则该文件只会引入app
一个模块。通常模块的引入都是自动完成的。 -
gradlew
是在Linux或Mac系统中用在命令行界面中执行Gradle命令所使用的 -
gradlew.bat
文件是在Windows系统下在命令行界面中执行Gradle命令所使用的 -
xxx.iml
文件是所有IntelliJ IDEA项目都会自动生成的问题及那,用于标识这是一个IntelliJ IDEA项目。 -
local.properties
文件用于指定本机中的Android SDK路径,该文件是自动生成的。
项目应用模块目录app
app
项目代码与资源存放目录,开发工作目录。
-
build
目录包含了在编译时自动生成的文件 -
libs
项目中使用的第三方jar
包,这些jar
包会被自动添加到构建路径中。 -
.proguard-rules.pro
文件用于指定项目代码的混淆规则 - .build.gradle
文件是
app`模块中Gradle构建脚本
apply plugin: 'com.android.application'
apply plugin
应用了一个插件,一般有两种可选值:'com.android.application'
表示是一个应用程序模块, 'com.android.library'
表示这是一个库模块。应用程序模块和库模块的区别在于应用程序模块可以直接运行,而库模块只能作为代码库依附于其它应用模块来运行。
android {
...
}
android
闭包中可以配置项目构建的各种属性
-
compileSdkVersion 27
用于指定项目的编译版本,这里的27表示使用Android对应版本系统的SDK进行编译。 -
buildToolsVersion '28.0.3'
用于指定项目构建工具的版本
defaultConfig{...}
闭包中可以对项目细节进行配置
-
applicationId 'com.zhiyi.onepay'
用于执行项目的包名 -
minSdkVersion 19
用于指定项目最低兼容的Android系统版本 -
targetSdkVersion 27
表示在对应目标版本上已经做了充分的测试 -
versionCode 1304
用于指定项目的版本号 -
versionName "1.3.4"
用于指定项目的版本名
buildTypes {...}
闭包用于指定生成安装文件的配置
release{...}
闭包用于指定生成正式版安装文件的配置debug{...}
闭包用于指定生成测试版安装文件的配置minifyEnabled false
用于指定是否对项目代码进行混淆proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
用于指定混淆时使用的规则文件。
proguard-andrid.txt
文件是在Android SDK目录下对所有项目都通用的混淆规则。
proguard-rules.pro
是在当前项目目录下,可以编写当前项目特有的混淆规则。
-
dependencies{...}
闭包用于指定当前项目所有的依赖关系
AS项目共有三种依赖方式:本地依赖、库依赖、远程依赖
本地依赖可对本地的jar
包或目录添加依赖关系
库依赖可以对项目中的库模块添加依赖关系
远程依赖可以对jcenter
上开源项目添加依赖关系
源代码目录src
-
java
目录用于存放所有Java代码 -
res
目录存放项目中所有使用到的图片、布局、字符串等资源。
图片存放在drawable
目录下,布局存放在layout
目录下,字符串存放在vaues
目录下。
layout
文件夹用于存放布局文件等,各个控件主要通过layout
布局文件来提供显示效果。
menu
文件夹 用来存放菜单及其子菜单项
mipmap
文件夹用于存放图标文件
values
文件夹用于存放具体数值类文件,采用键值对形式存放。 -
AndroidManifest.xml
文件是整个Android项目的配置文件,在程序中定义的四大组件都需要在这个文件中注册。