Android Studio中Project的项目结构模式

一.项目的总体结构

.gradle和.idea是AS自动生成的文件,不用编辑。

app中包含了代码和资源文件,开发是在这个目录下进行的。

gradle包含了gradle wrapper的配置文件。

.gitignore是用来将指定的目录或文件排除在版本控制外。

build.gradle是项目全局的gradle构建脚本。

gradle.properties是全局的gradle配置文件。

gradlew和gradlew.bat是用来在在命令行界面执行gradle命令的,前者用于Linux或Mac系统,后者用于Windows系统。

HelloWorld.iml是IDEA项目自动生成的文件,不需要更改。

local.properties用于指定本机Android SDK路径,通常不用更改,除非本机的Android SDK位置发生变化。

settings.gradle用于指定项目中所有引入的模块。

二.app目录下的结构

build包含编译时自动生成的文件。

libs用来存放第三方jar包。

androidTest用来编写Android Test测试用例,可以对项目进行一些自动化测试。

java存放编写的Java代码。

res存放资源文件,包括图片、布局、字符串等。图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。

AndroidManifest.xml是整个Android项目的配置文件,定义的四大组件都要在这里注册,权限的声明也在这里。

test用来编写Unit Test测试用例。

.gitignore将app模块中的指定目录或文件排除在版本控制外。

build.gradle指定很多项目构建相关的配置。

proguard-rules.pro用于指定项目代码的混淆规则。

三.对app目录下的build.gradle文件进行分析

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.helloworld"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

第一行应用了一个插件,有两种值可选:com.android.applicationcom.android.library,前者表示这是一个应用程序模块,后者表示这是一个库模块。

接下来是android闭包,其中的compileSdkVersion表示指定项目的编译版本。然后里面是一个defaultConfig闭包,其中applicationId表示指定项目的包名,minSdkVersion表示指定兼容项目的最低Sdk版本,targetSdkVersion表示我们在该目标版本的项目上已经做过充分的测试,versionCode指定项目版本号,versionName指定版本名,testInstrumentationRunner是单元测试。然后是buildTypes闭包,其中的release闭包下的minifyEnabled用于指定项目代码是否混淆,true表示混淆。proguardFiles表示指定混淆时使用的规则文件。

最后是dependencies闭包,这个闭包可以指定当前项目所有的依赖关系。AS项目共有3种依赖方式:本地依赖、库依赖和远程依赖。本地依赖是对本地的Jar包或目录添加依赖关系,库依赖是对项目中的库模块添加依赖关系,远程依赖是对jcenter库上的开源项目添加依赖关系。其中implementation fileTree是一个本地依赖的声明,它表示将libs目录下所有的.jar后缀文件添加到项目的构建路径当中。appcompat和constraint都属于远程依赖,其它的是测试相关内容。

猜你喜欢

转载自blog.csdn.net/myCSDN1997/article/details/83542587