Membuat APK (Android Package) Dengan Jetpack Compose
**Jetpack Compose** (UI Toolkit modern untuk Android).
Berikut **struktur direktori yang benar dan umum digunakan** saat membuat aplikasi Android menggunakan **Jetpack Compose**.
---
# 📁 Struktur Direktori Jetpack Compose (Standar)
Struktur default Android Studio saat membuat project Compose:
```
app/
│
├── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com.example.myapp/
│ │ │ ├── MainActivity.kt
│ │ │ ├── MyApp.kt
│ │ │ └── ui/
│ │ │ ├── theme/
│ │ │ │ ├── Color.kt
│ │ │ │ ├── Theme.kt
│ │ │ │ ├── Type.kt
│ │ │ └── components/
│ │ │ ├── PrimaryButton.kt
│ │ ├── res/
│ │ │ ├── drawable/
│ │ │ ├── values/
│ │ │ └── ...
│ ├── test/
```
---
# 💡 Struktur Folder **yang direkomendasikan** (Best Practice)
Jika project mulai besar, umumnya dibuat struktur feature-based:
```
app/
│
├── src/main/java/com.example.myapp/
│ ├── core/
│ │ ├── ui/
│ │ │ ├── theme/
│ │ │ └── components/
│ │ └── util/
│ │
│ ├── feature_home/
│ │ ├── HomeScreen.kt
│ │ ├── HomeViewModel.kt
│ │ ├── HomeEvent.kt
│ │ └── HomeState.kt
│ │
│ ├── feature_detail/
│ │ ├── DetailScreen.kt
│ │ ├── DetailViewModel.kt
│ │ └── ...
│ │
│ ├── navigation/
│ │ └── AppNavHost.kt
│ │
│ ├── MainActivity.kt
│ └── MyApp.kt
```
---
# 📦 Penjelasan Setiap Folder
### ✔ `core/ui/theme/`
Semua setup tema Compose:
* `Color.kt`
* `Type.kt`
* `Shape.kt` (opsional)
* `Theme.kt`
### ✔ `core/ui/components/`
Reusable komponennya Compose:
* tombol
* card
* appbar
dst.
### ✔ `feature_xxx/`
Folder untuk setiap fitur:
* `xxxScreen.kt` → UI
* `xxxViewModel.kt` → logic
* `xxxState.kt` → state UI
* `xxxEvent.kt` → event (opsional)
### ✔ `navigation/`
Mengatur rute Compose Navigation:
```kotlin
NavHost(...)
```
---
# 🧱 Contoh Isi File Jetpack Compose
### `MainActivity.kt`
```kotlin
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApp()
}
}
}
```
### `MyApp.kt`
```kotlin
@Composable
fun MyApp() {
MyTheme {
AppNavHost()
}
}
```
### `HomeScreen.kt`
```kotlin
@Composable
fun HomeScreen() {
Column(
modifier = Modifier.fillMaxSize().padding(16.dp)
) {
Text("Hello Jetpack Compose!")
}
}
```
---
Thank You
Good Working For You
Comments
Post a Comment