【04】项目结构

文章详细介绍了AndroidStudio项目的目录结构,包括.gradle和.idea忽略文件,app目录中的源代码、资源和测试,以及build目录的编译产物。还提到了gradle配置,如全局和模块级的build.gradle文件,以及.res目录中存放的资源类型。此外,还阐述了版本控制的.gitignore文件,以及代码混淆的proguard-rules.pro。
摘要由CSDN通过智能技术生成

Project目录如下:

一.整体目录

01. .gradle和.idea

这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑

02.app

项目中的代码、资源等内容都是放置在这个目录下的,我们后面的开发工作也基本是在这 个目录下进行的,待会儿还会对这个目录单独展开讲解。

03.build

这个目录主要包含了一些在编译时自动生成的文件,你也不需要过多关心

04.gradle

这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前 将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。 Android Studio默认就是启用gradle wrapper方式的,如果需要更改成离线模式,可以 点击Android Studio导航栏→File→Settings→Build, Execution, Deployment→Gradle,进行配置更改。

05. .gitignore

这个文件是用来将指定的目录或文件排除在版本控制之外的

06.build.gradle

这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的

07.gradle.properties

这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。

08.gradlew和gradlew.bat

这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。

09.local.properties

这个文件用于指定本机中的Android SDK路径,通常内容是自动生成的,我们并不需要修 改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可

10.settings.gradle

这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中只有一个app模块,因 此该文件中也就只引入了app这一个模块。通常情况下,模块的引入是自动完成的,需要我 们手动修改这个文件的场景可能比较少。

二.app目录

01.build

这个目录和外层的build目录类似,也包含了一些在编译时自动生成的文件,不过它里面的内容会更加复杂,我们不需要过多关心。

02.libs

如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会被自动添加到项目的构建路径里。

03.src-androidTest

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

04.src-main-java

毫无疑问,java目录是放置我们所有Java代码的地方(Kotlin代码也放在这里),展开该 目录,你将看到系统帮我们自动生成了一个MainActivity文件。

05.src-main-res

这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片、布局、字 符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable 目录下,布局放在layout目录下,字符串放在values目录下,所以你不用担心会把整个res 目录弄得乱糟糟的。

06.src-main-AndroidManifest.xml

这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注 册,另外还可以在这个文件中给应用程序添加权限声明

07.src-test

此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。

08..gitignore

这个文件用于将app模块内指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。

09.build.gradle

这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置,我们稍后 将会详细分析gradle构建脚本中的具体内容

10.proguard-rules.pro

这个文件用于指定项目代码的混淆规则,当代码开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。

三.res目录

所有 以“drawable”开头的目录都是用来放图片的,所有以“mipmap”开头的目录都是用来放应用图 标的,所有以“values”开头的目录都是用来放字符串、样式、颜色等配置的,所有 以“layout”开头的目录都是用来放布局文件的 

四.build.gradle

01最外层的build.gradle文件

 首先,两处repositories的闭包中都声明了google()和jcenter()这两行配置,那么它们 是什么意思呢?其实它们分别对应了一个代码仓库,google仓库中包含的主要是Google自家的扩展依赖库,而jcenter仓库中包含的大多是一些第三方的开源库。声明了这两行配置之后,我 们就可以在项目中轻松引用任何google和jcenter仓库中的依赖库了

接下来dependencies闭包中使用classpath声明了两个插件:一个Gradle插件和一个 Kotlin插件,则需要声明com.android.tools.build:gradle:3.5.2这个插件。其中,最后面 的部分是插件的版本号,它通常和当前Android Studio的版本是对应的,比如我现在使用的是 Android Studio 3.5.2版本,那么这里的插件版本号就应该是3.5.2。而另外一个Kotlin插件则 表示当前项目是使用Kotlin进行开发的,如果是Java版的Android项目,则不需要声明这个插 件。

02.app层的build.gradle文件

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdk 33
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.example.helloworld"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

逐个分析

1.com.android.application表示这是一个应用程序模块

2.kotlin-android和kotlin-android-extensions,如果你想要使 用Kotlin来开发Android项目,那么第一个插件就是必须应用的。而第二个插件帮助我们实现了 一些非常好用的Kotlin扩展功能

3.andorid闭包

3.1包含defaultConfig闭包,在defaultConfig闭包中,

applicationId:是每一个应用的唯一标识符,不可重复,

minSdkVersion:用于指定项目最低兼容的Android系统版本,

targetSdkVersion:指定的值表示你在该目标版本上已经 做过了充分的测试,系统将会为你的应用程序启用一些最新的功能和特性

versionCode:用于指定项目的版本号

versionName:用于指定项目的版本名

testInstrumentationRunner:用于在当前项 目中启用JUnit测试,你可以为当前项目编写测试用例,以保证功能的正确性和稳定性

3.2包含buildTypes闭包

用于指定生成安装文件的相关配置,通常会有两个子闭包:一个是debug,一个是release

debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式版安装文件 的配置

minifyEnabled:用于指定是否 对项目的代码进行混淆,true表示混淆,false表示不混淆

proguardFiles:用于指定混淆 时使用的规则文件,这里指定了两个文件:第一个proguard-android-optimize.txt是在 <Android SDK>/tools/proguard目录下的,里面是所有项目通用的混淆规则;第二个 proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则

4.dependencies闭包

implementation fileTree就是一个本 地依赖声明,它表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中

implementation则是远程依赖声明,比如implementation 'androidx.core:core-ktx:1.9.0'

库依赖声明:基本格式是implementation project后面加上要 依赖的库的名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值