Android项目结构讲解【超详细】

1. Android 项目结构

1.1 Android 查看模式

  Android 查看模式下,项目结构可分为AppGradle Scripts两大类:

在这里插入图片描述

1.1.1 App类

  1. manifests: 用于存放App的配置文件
    • AndroidManifest.xml
  2. java:用于存放程序文件和测试用的程序文件
  3. res:用于存放各类资源文件
    • drawable:存放图形文件
    • anim:存放动画文件
    • layout:存放布局文件
    • menu:存放菜单文件
    • mipmap:存放清晰显示的图形
    • values:存放其它数据

1.1.2 Gradle Scripts类

  1. build.gradle:
  2. config.gradle:
  3. settings.gradle: settings.gradle编译优先级高于build.gradle
  4. gradle.properties:
  5. local.properties:

1.2 Project 查看模式

  在 Android Studio 中,Android 模式下开发人员可快速找到需求文件,但不能反映实际的项目文件目录结构,在项目窗格显示模式切换菜单中选择Project模式,可显示项目结构。

在这里插入图片描述

1.2.1 drawable文件讲解

  观察Project结构可知,drawable存在多个目录。这在Android结构中是无法查看的。各目录存储文件的规则是:

  • drawable 用于存储drawable类的xml文件
  • drawable-hdpi(高密度) 图片
  • drawable-xhdpi(超高密度) 图片
  • drawable-xxhdpi(超超高密度) 图片

注意:同一图片在上面几个目录中名字需要相同,这样才可以根据手机分辨率去适配不同分辨率的图片, mipmap文件也是如此

1.2.2 各种资源文件/目录的创建

  • 创建anim动画目录: 选中res目录 → \rightarrow New → \rightarrow Android Resource Directory → \rightarrow Resource type: → \rightarrow 将类型改为anim

其他资源文件目录类似

  • anim: 选中该目录 → \rightarrow New → \rightarrow Animation Resource File选中res目录 → \rightarrow New Android Resource File → \rightarrow Resource type: → \rightarrow 将类型改为Animation

其他资源文件类似

2. Gradle 文件讲解

2.1 build.gradle

    在Android项目中,build.gradle文件通常分为两部分:

  1. 项目级别build.gradle(通常位于项目的根目录)
  2. 模块级别build.gradle(位于每个模块的目录下)

在这里插入图片描述

2.1.1 各司其职

项目级别的build.gradle文件通常用于定义所有子项目模块共用的配置项,如:

  • Gradle插件的版本、
  • 仓库设置等。

模块级别的build.gradle文件则针对具体的模块进行配置,如:

  • 编译选项、
  • 依赖库、
  • 签名配置

2.1.2 项目级别下的bulid.gradle配置

  1. buildscript :这部分定义了构建脚本所需的插件和依赖项。它通常包含:
    • repositories块,用于指定插件和依赖项的仓库来源,
    • dependencies块,用于列出构建脚本所需的Gradle插件。
  2. allprojects :这部分定义了所有模块(子项目)共享仓库和依赖项配置。
  3. 其他配置:
apply from: 'config.gradle'
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral()
        // 其他仓库
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.0"
		// 其他构建脚本依赖项 
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

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

2.1.3 模块级别下的bulid.gradle配置

  1. 应用插件(plugins ):声明了应用于该模块的Gradle插件,通常是Android相关的插件。

    • 写法1
    apply plugin: 'com.android.application'  
    // 或者对于库模块 
    apply plugin: 'com.android.library'
    
    • 写法2
    plugins {
    id 'com.android.application'
    }
    
  2. android :这部分包含了Android特定的构建配置,如编译SDK版本、构建工具版本、默认配置、签名配置等。

android {
    compileSdkVersion 34
    buildToolsVersion "34.0.0"

    defaultConfig {
        applicationId "com.example.module_test"
        minSdkVersion 30
        targetSdkVersion 34
        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
    }
}
  1. 依赖项:
dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

2.2 settings.gradle

  1. settings.gradle文件用于配置项目的设置,包括
    • 模块和子项目的包含与排除
    • 项目之间的依赖关系等

在这里插入图片描述

2.3 config.gradle

config.gradle文件通常用于统一管理和配置项目的公共属性,如

  • 版本号
  • 构建工具版本
  • 依赖库版本等

当项目中有多个模块时,为了避免在每个模块的build.gradle文件中重复配置相同的属性,可以将这些公共配置提取到config.gradle文件中,然后在每个模块的build.gradle文件中引用它。

2.3.1 创建 config.gradle

创建config.gradle文件的一般步骤如下:

  1. 在项目的根目录下创建一个名为config.gradle的文件。
    • 这个文件通常与settings.gradle项目的根build.gradle文件位于同一目录下。
  2. 在config.gradle文件中定义所需的配置项。例如,
    • 你可以定义一个ext块来包含版本号构建工具版本等信息。
ext {  
    android = [  
        buildToolsVersion: '28.0.3',  
        supportVersion: '26.0.2',  
        minSdkVersion: 19,  
        compileSdkVersion: 23,  
        targetSdkVersion: 23,  
        applicationId: "com.example.myapp",  
        versionCode: 1,  
        versionName: "1.0",  
        // 其他配置项...  
    ]  
    // 其他扩展属性...  
    dependencies = [
    	// 组件库
     	"xpopup" : "'com.lxj:xpopup:2.1.4'",
    	...
    ]
}

2.3.2 使用 config.gradle

第一步

  • 项目的根build.gradle文件(不是模块级别)的顶部,使用apply from:语句来引入config.gradle文件。
apply from: 'config.gradle'

第二步

  • 在模块的build.gradle文件中通过android或定义的扩展属性来引用模块所需的配置项
android {  
    compileSdkVersion rootProject.ext.android.compileSdkVersion  
    // 其他Android配置...  
}  
  
dependencies {  
    // xpopup库
    api rootProject.ext.dependencies['xpopup']
    // implementation rootProject.ext.dependencies['xpopup']
    // 其他依赖项...  
}

注意

  • api:作用域用于指定一个依赖项不仅对该模块可见,而且还会被传递到使用该模块的其他模块中。即,自己引用的库别的模块也可以用
  • implementation: 仅引用该库(xpopup)的模块可以xpopup
  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值