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"><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>
</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]