Android Studio'da Jetpack Compose ile Hızlı Başlangıç
Jetpack Compose — Android için deklaratif bir UI toolkit'idir. Kısaca: Android Studio'yu en son kararlı sürüme güncelleyin, JDK 17+ kurun, Kotlin 1.8+ kullanın, buildFeatures.compose özelliğini etkinleştirin, Compose BOM ve kotlinCompilerExtensionVersion ekleyin, ardından Empty Compose Activity oluşturun — ekran hemen görünecektir.
Gereksinimler ve Hazırlık
- Android Studio: Hedgehog (2023.1.1) veya daha yeni; tercihen en güncel kararlı sürüm.
- JDK 17+.
- Kotlin 1.8+ (Compose derleyici sürümü ile bağlantılı).
- Minimum SDK API 21+, mümkünse birkaç farklı API üzerinde test edilmesi önerilir.
- SDK Manager'dan gerekli API'ler için platformları ve emülatör imajlarını indirin.
Bağımlılık sürümlerini yönetmek için Compose BOM (platform) kullanın ve kotlinCompilerExtensionVersion sürümünü takip edin — Kotlin sürümüyle eşleşmelidir.
Proje Kurulumu ve Yapılandırma
- Proje oluşturun: File > New > New Project > Empty Compose Activity.
- module build.gradle.kts dosyasında Compose'u etkinleştirin ve BOM üzerinden bağımlılıkları ekleyin:
android {
compileSdk = 34
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.8" // güncelliğini kontrol edin
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
implementation(platform("androidx.compose:compose-bom:2024.06.00"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
implementation("androidx.activity:activity-compose:1.9.2")
debugImplementation("androidx.compose.ui:ui-tooling")
}
- Sync Now yapın ve Build > Make Project çalıştırın. Eski projeler için: aynı bağımlılıkları ekleyin ve Activity'de setContentView yerine setContent { … } kullanın.
İlk Ekran — Kod Örneği
MainActivity ve basit bir Composable için minimum çalışan örnek:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent { MyApp() }
}
}
@Composable
fun MyApp() {
MaterialTheme {
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background) {
Greeting("Android")
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Column(
modifier = modifier
.fillMaxSize()
.padding(16.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Hello, $name!", style = MaterialTheme.typography.headlineMedium)
Spacer(modifier = Modifier.height(16.dp))
Button(onClick = { /* işlem */ }) {
Text("Düğme")
}
}
}
Emülatörde çalıştırın — ortalanmış metni ve düğmeyi göreceksiniz.
Sık Karşılaşılan Hatalar
- Uyumsuz Kotlin / Compose Compiler kombinasyonu — derleme hatası. Çözüm: sürümleri senkronize edin (Kotlin ↔ compiler extension).
- buildFeatures.compose = true eksik — proje derlenmez. android{} içine ekleyin.
- Yanlış Material import'u (Material vs Material3) — bileşenler farklı görünür/davranır. Bağımlılıkları kontrol edin.
- Composable gövdesinde State.value doğrudan çağrılıyor ve değiştiriliyor — sonsuz recompose olabilir. LaunchedEffect / rememberUpdatedState veya olay işleyicileri kullanın.
- @Preview ekranı göstermiyor — plugin'in yüklü olduğundan emin olun ve Preview'da doğru Device/Api belirtildiğini kontrol edin veya Android Studio'yu yeniden başlatın.
Composable gövdesinde State.value değerini efekt (LaunchedEffect/SideEffect) olmadan asla doğrudan değiştirmeyin — bu genellikle sonsuz yeniden çizime yol açar.
SSS
-
Bir projede XML ve Compose karıştırılabilir mi? Evet. Compose parça parça entegre edilebilir: XML'e ComposeView ekleyin veya mevcut view'ların yanındaki Activity/Fragment'te setContent kullanın.
-
Geliştirme sırasında UI değişikliklerini hızlıca nasıl görebilirim? Yinelemeler için @Preview kullanın ve Android Studio'da Live Edit/Apply Changes özelliğinden yararlanın (varsa).
-
Eski ekranları Compose'a nasıl taşıyabilirim? Küçük bileşenlerle başlayın: tek tek widget'ları Composable'a dönüştürün, ardından Activity/Fragment setContent'i kademeli olarak değiştirin.
Gerekirse migration checklist'i veya navigation ve state management içeren minimum proje şablonunu gönderebilirim.