Android开发基础06-Android项目结构

详细介绍Android项目结构

Android开发过程中,高效、清晰的项目结构是成功的关键。理解并合理组织项目结构,有助于提高代码的可维护性和团队协作的效率。

目录概览

一个典型的Android项目目录结构如下:

MyApplication/
 ├── app/
 │   ├── build/
 │   ├── libs/
 │   ├── src/
 │   │   ├── androidTest/
 │   │   │   └── java/
 │   │   ├── main/
 │   │   │   ├── java/
 │   │   │   ├── kotlin/
 │   │   │   ├── res/
 │   │   │   ├── AndroidManifest.xml
 │   │   └── test/
 │   │       └── java/
 │   ├── build.gradle
 ├── build/
 ├── gradle/
 ├── .gradle/
 ├── build.gradle
 ├── gradle.properties
 ├── gradlew
 ├── gradlew.bat
 ├── settings.gradle
 └── local.properties

1. 顶级目录

顶级目录包含整个项目的全局配置和设置。

1.1 build.gradle

这是顶级Gradle构建脚本,用于配置全局项目设置和依赖项。一个典型的顶级 build.gradle 文件可能如下所示:

buildscript {
    ext.kotlin_version = '1.5.21'
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

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

1.2 settings.gradle

用于包括多模块项目的设置文件。通常包含项目名称和模块信息:

include ':app'

1.3 gradle.properties

用于设置Gradle构建系统的一些属性,例如内存设置、缓存选项等:

org.gradle.jvmargs=-Xmx1536m

1.4 gradlewgradlew.bat

它们是Gradle Wrapper脚本,允许在没有预先安装Gradle的环境中运行Gradle任务。gradlew 是适用于Unix/Linux系统的脚本,而 gradlew.bat 适用于Windows系统。

1.5 local.properties

这个文件通常包含本地机器的特定配置,例如Android SDK的路径:

sdk.dir=/Users/your_user/Library/Android/sdk

2. app 模块

app 是应用程序的主模块,也是最常见的模块。它包含应用程序的源代码、资源文件、构建脚本等。

2.1 build.gradle

该文件是模块级的构建脚本,定义了模块的构建配置和依赖关系:

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30

    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    testImplementation 'junit:junit:4.12'
}

3. src 目录

src 目录包含应用程序的所有源代码、资源文件和配置文件。

3.1 main 目录

这是应用程序的主目录,也是最重要的目录,包含以下子目录:

3.1.1 java 目录

包含所有的Java源代码文件。通常,它的目录结构与包名一致:

src/main/java/com/example/myapp/
 ├── MainActivity.java
 └── AnotherActivity.java
3.1.2 kotlin 目录

如果项目使用Kotlin编写,这里将包含所有的Kotlin源代码文件:

src/main/kotlin/com/example/myapp/
 ├── MainActivity.kt
 └── AnotherActivity.kt
3.1.3 res 目录

包含所有应用程序的资源文件,如布局文件、图片、字符串资源等。res 目录中通常包含以下子目录:

  • drawable/:包含位图文件,如PNG、JPEG等。
  • layout/:存放应用程序的布局文件(XML)。
  • mipmap/:存放启动图标(.ico),不同尺寸分别存在 mipmap-hdpi, mipmap-mdpi, mipmap-xhdpi 等目录。
  • values/:存放资源值文件,如 strings.xml, colors.xml, styles.xml 等。

3.2 AndroidManifest.xml

这是一个非常重要的配置文件,定义了应用程序的基本信息、组件、权限等:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 其他组件,如Service、BroadcastReceiver等 -->
    </application>
</manifest>

4. 测试目录

包括 androidTesttest 目录,分别用于编写仪器化测试和单元测试代码。

4.1 androidTest 目录

包含仪器化测试的源代码,通过 AndroidJUnitRunner 运行:

src/androidTest/java/com/example/myapp/
 └── ExampleInstrumentedTest.java

4.2 test 目录

包含单元测试的源代码,使用 JUnit 或其他测试框架进行测试:

src/test/java/com/example/myapp/
 └── ExampleUnitTest.java

5. build 目录

此目录用于存储Gradle构建生成的文件,如编译后的代码、打包的APK等。通常不需要手动修改或查看。

6. libs 目录

存放项目依赖的外部库(.jar 或 .aar 文件)。可以通过在 build.gradle 文件中引用该目录的库:

dependencies {
    implementation files('libs/some-library.jar')
}

总结

在实际项目中,根据具体需求可能会有所调整,但总体结构大致相同。掌握这些知识,有助于我们更好地组织和管理Android项目,提高开发效率和代码质量。

posted @ 2024-08-07 19:13  Mr.陳  阅读(204)  评论(0编辑  收藏  举报