Android项目结构

Android项目结构:

app 目录中的内容是工作的重点。构成如下:

1. manifests

AndroidManifest.xml

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

关于这个文件的详细讲解请参考:

 

2. java

此文件夹包含三个子目录:com.example.geoquiz,com.example.geoquiz(androidTest),com.example.geoquiz(test)

com.example.geoquiz

放置我们写的Java代码。

com.example.geoquiz(androidTest)

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

com.example.geoquiz(test)

编写Unit Test测试用例。

3.res

项目中用到的所有图片、布局、字符串等都放在这个目录下。其中包含很多子目录用来存放对应的资源。

Gradle Scripts目录

这个目录下有:

1.build.gradle(Project:GeoQuiz)

这是项目全局的gradle构建脚本,通常不需要修改。具体如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
// 翻译:顶级构建文件,您可以在其中添加所有子项目/模块共有的配置选项。

buildscript {
    
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.2'
        

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Android Studio是采用Gradle来构建项目的。Gradle是一个非常先进的构建工具,它使用一种基于Groovy的领域特定语言(DSL)来声明项目设置,摈弃了传统的基于XML(如Ant和Maven)的各种繁琐配置。

这个文件中有两处repositories闭包, repositories是仓库的意思,jcenter便是一个代码托管仓库,声明了jcenter()以后便可以从jcenter上引用开源项目了。

由于jcenter是国外的代码托管平台,所有有时无法正常访问,此时便需要使用国内的镜像网站,常用的有:

dependencies闭包,其中classpath声明了一个Gradle插件。这个插件是用来构建Android项目的。因为Gragle并不是专为构建Android项目而开发的,Java、C++等其他很多项目都可以使用Gradle来构建。当需要用来构建Android项目时,便需要声明:

classpath 'com.android.tools.build:gradle:3.6.2'

3.6.2:是gradle插件的版本号。

task clean(type: Delete){}是:

 

2.build.gradle(Module:app)

这是app模块的gradle构建脚本,其中会指定很多项目构建的相关配置。具体如下:

apply plugin: 'com.android.application'
//表示应用了一个插件,一般有两种值:
//com.android.application表示这是一个应用程序模块,
//com.android.library表示这是一个库模块。
//程序应用模块和库模块的最大区别是:
// 应用模块可以直接运行,
// 库模块只能依附于别的应用模块来运行。

//在android闭包中可以配置项目构建的各种属性
android {
    //compileSdkVersion用于指定项目的编译版本,
    // 29 表示使用Android 10.0系统的SDK编译
    // 29和下面的16是表示API Level,不同的API Level对应不同的Android系统,
    // 具体可在Tools-SDK Manager中查看
    compileSdkVersion 29
    //buildToolsVersion用于指定构建工具的版本
    buildToolsVersion "29.0.3"

    //defaultConfig闭包可以进行更多细节配置
    defaultConfig {
        //applicationId用于指定项目的包名,创建项目的时候已经设置过了,可在这里修改
        applicationId "com.example.geoquiz"
        //minSdkVersion用于指定项目最低兼容的Android系统版本
        //16表示最低兼容到Android4.1系统
        minSdkVersion 16
        //targetSdkVersion指定的值表示你在该版本上已经做过充分的测试,
        //系统会为应用程序启用一些最新的功能和特性
        //比如Android系统6.0引入了运行时权限,如果targetSdkVersion指定为23及以上,
        //系统就会启用新特性,反之则不启用
        targetSdkVersion 29
        //versionCode指定项目版本号
        versionCode 1
        //versionName指定项目版本名
        //versionCode和versionName非常重要,后面会补充说明
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    //buildTypes闭包指定生成安装文件的相关配置,一般有两个闭包:debug、release
    //debug闭包指定生成测试版安装文件的配置,debug闭包可省略
    //release闭包指定生成正式版安装文件的配置
    //注:在Android Studio直接运行的项目都是测试版安装文件,如何生成正式版后面补充。
    buildTypes {
        release {
            //minifyEnabled指定是否对项目代码进行混淆
            minifyEnabled false
            //proguardFiles 指定混淆时使用的规则文件,默认有两个:
            //proguard-android-optimize.txt:这个是在Android SDK目录下,
            //其中有所有项目的通用混淆规则
            //proguard-rules.pro:这个在当前项目的跟目录下,
            //可以在里面编写当前项目特有的混淆规则
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

//dependencies闭包指定当前项目所有的依赖关系
//通常Android Studio项目有3种依赖方式:本地依赖、库依赖、远程依赖
//本地依赖:对本地的jar包或目录添加依赖关系
//库依赖:可以对项目中的库模块添加依赖关系
//远程依赖:可以对jcenter等库上的开源项目添加依赖关系
dependencies {
    //本地依赖,表示将libs目录下的所有.jar后缀文件都添加到项目的构建路径中。
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    //远程依赖声明 androidx.appcompat:appcompat:1.1.0是一个标准的远程依赖格式
    //androidx.appcompat是域名,标识公司
    //appcompat是组名,同公司,标识不同库
    //1.1.0版本号
    //有了这句声明后,Gradle在构建项目时会首先检查本地是否已经有了这个库的缓存,
    //没有则联网下载,然后添加到项目的构建路径中。
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    
    //声明测试用例库
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    
    //库模块的声明方式:
    //。。。暂为用到,用到后再补充
}

 

3.gradle-wrapper.properties(Gradle Version)

4.proguard-rules.pro(Proguard Rules for app)

这个文件用于指定项目代码的混淆规则,如果不希望代码被人破解,当项目开发完成后打开安装包文件,可以对代码进行混淆,

从而让代码难以阅读。

5.gradle.properties(Project Properties)

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

6.setting.gradle(Project Setting)

这个文件用于指定项目中所有引入的模块。GeoQuiz项目只有app模块。通常模块的引用是自动完成的。

7.local.properties(SDK Location)

这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,一般不需要修改。

当本机中的Android SDK位置发生变化时,可在这个文件中指定新的路径。

完整项目结构:

1. .gragle和.idea

这两个目录下放置的都是Android Studio自动生成的一些文件,不要手动编译。

2. app

项目中的代码、资源都放在这个目录下,详细的内容在上面。

build:这个目录包含一些在编译时自动生成的文件,不需要修改。

libs:存放第三方jar包。这个目录下的jar包会自动添加到构建路径中。

3. gradle

包含gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否联网下载gradle。Android Studio默认不启用gradle wrapper,如需打开,可在File - Settings - Build,Execution,Deployment - Gradle中进行配置。

4. .gitigonore

这个文件用来将指定的目录或文件排除在版本控制以外,关于版本控制请参考:

5. build.gradle

同build.gradle(Project:...)。

6.GeoQuiz.iml

iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,不需要修改任何内容。

7.gradlew和gradlew.bat

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

8. gradle.properties、local.properties、settin.properties

和Gradle Scripts中的文件是同一个。

External Libraries目录:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值