Bỏ qua để đến nội dung

Cấu trúc dự án Android

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
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
<?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>
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)
}
drawable/
├── ic_launcher_background.xml
├── ic_launcher_foreground.xml
└── custom_image.png
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>

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

  • mipmap-mdpi/ (1x)
  • mipmap-hdpi/ (1.5x)
  • mipmap-xhdpi/ (2x)
  • mipmap-xxhdpi/ (3x)
  • mipmap-xxxhdpi/ (4x)
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
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
org.gradle.jvmargs=-Xmx2048m
android.useAndroidX=true
kotlin.code.style=official
android.nonTransitiveRClass=true

Thư mục/File Mục đích
app/src/main/java/ Kotlin/Java source code
app/src/main/res/ Resources (images, strings, etc.)
AndroidManifest.xml App configuration
build.gradle.kts Dependencies và build settings
gradle/ Gradle wrapper files