Skip to Content
Android📚 Học lập trình AndroidCấu trúc dự án Android

Cấu trúc dự án Android

1. Tổng quan

MyApp/ ├── app/ # Module chính │ ├── src/ │ │ ├── main/ # Code và resources chính │ │ ├── test/ # Unit tests │ │ └── androidTest/ # Instrumented tests │ └── build.gradle.kts # Build config của module ├── gradle/ # Gradle wrapper ├── build.gradle.kts # Build config của project ├── settings.gradle.kts # Project settings └── gradle.properties # Gradle properties

2. Thư mục app/src/main

main/ ├── java/com/example/myapp/ # Kotlin/Java code │ ├── MainActivity.kt │ ├── ui/ │ │ ├── screens/ │ │ ├── components/ │ │ └── theme/ │ ├── data/ │ │ ├── repository/ │ │ └── model/ │ └── ... ├── res/ # Resources │ ├── drawable/ # Images, icons │ ├── layout/ # XML layouts (legacy) │ ├── values/ # Strings, colors, themes │ ├── mipmap/ # App icons │ └── ... └── AndroidManifest.xml # App manifest

3. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <!-- Permissions --> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.MyApp"> <!-- Main Activity --> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

4. build.gradle.kts (Module: app)

plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) } android { namespace = "com.example.myapp" compileSdk = 34 defaultConfig { applicationId = "com.example.myapp" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "1.0" } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.material3) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) }

5. Thư mục res/

drawable/

drawable/ ├── ic_launcher_background.xml ├── ic_launcher_foreground.xml └── custom_image.png

values/

<!-- strings.xml --> <resources> <string name="app_name">My App</string> <string name="hello">Xin chào</string> </resources> <!-- colors.xml --> <resources> <color name="purple_500">#FF6200EE</color> <color name="teal_200">#FF03DAC5</color> </resources>

mipmap/

App icons ở các density khác nhau:

  • mipmap-mdpi/ (1x)
  • mipmap-hdpi/ (1.5x)
  • mipmap-xhdpi/ (2x)
  • mipmap-xxhdpi/ (3x)
  • mipmap-xxxhdpi/ (4x)

6. Cấu trúc code khuyến nghị

com.example.myapp/ ├── MainActivity.kt ├── MyApplication.kt # Application class ├── ui/ │ ├── screens/ # Màn hình │ │ ├── home/ │ │ │ ├── HomeScreen.kt │ │ │ └── HomeViewModel.kt │ │ └── detail/ │ ├── components/ # UI components tái sử dụng │ │ ├── AppBar.kt │ │ └── LoadingIndicator.kt │ ├── navigation/ # Navigation setup │ │ └── NavGraph.kt │ └── theme/ # Theme, colors, typography │ ├── Theme.kt │ ├── Color.kt │ └── Type.kt ├── data/ │ ├── model/ # Data models │ │ └── User.kt │ ├── repository/ # Data repositories │ │ └── UserRepository.kt │ ├── local/ # Local database │ │ └── UserDao.kt │ └── remote/ # API services │ └── ApiService.kt ├── di/ # Dependency Injection │ └── AppModule.kt └── util/ # Utility classes └── Extensions.kt

7. Gradle Files

settings.gradle.kts

pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } } rootProject.name = "MyApp" include(":app")

gradle.properties

org.gradle.jvmargs=-Xmx2048m android.useAndroidX=true kotlin.code.style=official android.nonTransitiveRClass=true

📝 Tóm tắt

Thư mục/FileMục đích
app/src/main/java/Kotlin/Java source code
app/src/main/res/Resources (images, strings, etc.)
AndroidManifest.xmlApp configuration
build.gradle.ktsDependencies và build settings
gradle/Gradle wrapper files
Last updated on