惠州地产 發表於 2024-8-7 19:13:00

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

<h2 id="详细介绍android项目结构">详细介绍Android项目结构</h2>
<p>Android开发过程中,高效、清晰的项目结构是成功的关键。理解并合理组织项目结构,有助于提高代码的可维护性和团队协作的效率。</p>
<h3 id="目录概览">目录概览</h3>
<p>一个典型的Android项目目录结构如下:</p>
<pre><code>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
</code></pre>
<h3 id="1-顶级目录">1. 顶级目录</h3>
<p>顶级目录包含整个项目的全局配置和设置。</p>
<h4 id="11-buildgradle">1.1 <code>build.gradle</code></h4>
<p>这是顶级Gradle构建脚本,用于配置全局项目设置和依赖项。一个典型的顶级 <code>build.gradle</code> 文件可能如下所示:</p>
<pre><code class="language-groovy">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
}
</code></pre>
<h4 id="12-settingsgradle">1.2 <code>settings.gradle</code></h4>
<p>用于包括多模块项目的设置文件。通常包含项目名称和模块信息:</p>
<pre><code class="language-groovy">include ':app'
</code></pre>
<h4 id="13-gradleproperties">1.3 <code>gradle.properties</code></h4>
<p>用于设置Gradle构建系统的一些属性,例如内存设置、缓存选项等:</p>
<pre><code class="language-properties">org.gradle.jvmargs=-Xmx1536m
</code></pre>
<h4 id="14-gradlew-和-gradlewbat">1.4 <code>gradlew</code> 和 <code>gradlew.bat</code></h4>
<p>它们是Gradle Wrapper脚本,允许在没有预先安装Gradle的环境中运行Gradle任务。<code>gradlew</code> 是适用于Unix/Linux系统的脚本,而 <code>gradlew.bat</code> 适用于Windows系统。</p>
<h4 id="15-localproperties">1.5 <code>local.properties</code></h4>
<p>这个文件通常包含本地机器的特定配置,例如Android SDK的路径:</p>
<pre><code class="language-properties">sdk.dir=/Users/your_user/Library/Android/sdk
</code></pre>
<h3 id="2-app-模块">2. <code>app</code> 模块</h3>
<p><code>app</code> 是应用程序的主模块,也是最常见的模块。它包含应用程序的源代码、资源文件、构建脚本等。</p>
<h4 id="21-buildgradle">2.1 <code>build.gradle</code></h4>
<p>该文件是模块级的构建脚本,定义了模块的构建配置和依赖关系:</p>
<pre><code class="language-groovy">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'
}
</code></pre>
<h3 id="3-src-目录">3. <code>src</code> 目录</h3>
<p><code>src</code> 目录包含应用程序的所有源代码、资源文件和配置文件。</p>
<h4 id="31-main-目录">3.1 <code>main</code> 目录</h4>
<p>这是应用程序的主目录,也是最重要的目录,包含以下子目录:</p>
<h5 id="311-java-目录">3.1.1 <code>java</code> 目录</h5>
<p>包含所有的Java源代码文件。通常,它的目录结构与包名一致:</p>
<pre><code>src/main/java/com/example/myapp/
├── MainActivity.java
└── AnotherActivity.java
</code></pre>
<h5 id="312-kotlin-目录">3.1.2 <code>kotlin</code> 目录</h5>
<p>如果项目使用Kotlin编写,这里将包含所有的Kotlin源代码文件:</p>
<pre><code>src/main/kotlin/com/example/myapp/
├── MainActivity.kt
└── AnotherActivity.kt
</code></pre>
<h5 id="313-res-目录">3.1.3 <code>res</code> 目录</h5>
<p>包含所有应用程序的资源文件,如布局文件、图片、字符串资源等。<code>res</code> 目录中通常包含以下子目录:</p>
<ul>
<li><code>drawable/</code>:包含位图文件,如PNG、JPEG等。</li>
<li><code>layout/</code>:存放应用程序的布局文件(XML)。</li>
<li><code>mipmap/</code>:存放启动图标(.ico),不同尺寸分别存在 <code>mipmap-hdpi</code>, <code>mipmap-mdpi</code>, <code>mipmap-xhdpi</code> 等目录。</li>
<li><code>values/</code>:存放资源值文件,如 <code>strings.xml</code>, <code>colors.xml</code>, <code>styles.xml</code> 等。</li>
</ul>
<h4 id="32-androidmanifestxml">3.2 <code>AndroidManifest.xml</code></h4>
<p>这是一个非常重要的配置文件,定义了应用程序的基本信息、组件、权限等:</p>
<pre><code class="language-xml">&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"&gt;

    &lt;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"&gt;
      
      &lt;activity android:name=".MainActivity"&gt;
            &lt;intent-filter&gt;
                &lt;action android:name="android.intent.action.MAIN" /&gt;

                &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
            &lt;/intent-filter&gt;
      &lt;/activity&gt;

      &lt;!-- 其他组件,如Service、BroadcastReceiver等 --&gt;
    &lt;/application&gt;
&lt;/manifest&gt;
</code></pre>
<h3 id="4-测试目录">4. 测试目录</h3>
<p>包括 <code>androidTest</code> 和 <code>test</code> 目录,分别用于编写仪器化测试和单元测试代码。</p>
<h4 id="41-androidtest-目录">4.1 <code>androidTest</code> 目录</h4>
<p>包含仪器化测试的源代码,通过 <code>AndroidJUnitRunner</code> 运行:</p>
<pre><code>src/androidTest/java/com/example/myapp/
└── ExampleInstrumentedTest.java
</code></pre>
<h4 id="42-test-目录">4.2 <code>test</code> 目录</h4>
<p>包含单元测试的源代码,使用 JUnit 或其他测试框架进行测试:</p>
<pre><code>src/test/java/com/example/myapp/
└── ExampleUnitTest.java
</code></pre>
<h3 id="5-build-目录">5. <code>build</code> 目录</h3>
<p>此目录用于存储Gradle构建生成的文件,如编译后的代码、打包的APK等。通常不需要手动修改或查看。</p>
<h3 id="6-libs-目录">6. <code>libs</code> 目录</h3>
<p>存放项目依赖的外部库(.jar 或 .aar 文件)。可以通过在 <code>build.gradle</code> 文件中引用该目录的库:</p>
<pre><code class="language-groovy">dependencies {
    implementation files('libs/some-library.jar')
}
</code></pre>
<h2 id="总结">总结</h2>
<p>在实际项目中,根据具体需求可能会有所调整,但总体结构大致相同。掌握这些知识,有助于我们更好地组织和管理Android项目,提高开发效率和代码质量。</p>


</div>
<div id="MySignature" role="contentinfo">
    将来的你会感谢今天如此努力的你!
版权声明:本文为博主原创文章,未经博主允许不得转载。<br><br>
来源:https://www.cnblogs.com/chglog/p/18347697
頁: [1]
查看完整版本: Android开发基础06-Android项目结构