İçeriğe geç
Educora
İleri20 dk9 / 14

Android Studio ve ilk uygulaman

Android Studio'yu kur, bir Compose projesi oluştur, proje yapısını ve Gradle Kotlin DSL dosyalarını anla, uygulamayı emülatörde ve telefonda çalıştır, Logcat'te günlük mesajlarını oku.

Kendini test et
Bu derste öğreneceklerin
  • Android Studio'yu kurup Empty Activity şablonundan proje oluşturmak
  • Proje yapısını ve build.gradle.kts ile libs.versions.toml dosyalarının rolünü açıklamak
  • Uygulamayı emülatörde ve gerçek bir telefonda çalıştırmak
  • Log.d ile mesaj yazmak ve onları Logcat'te filtrelemek

Kotlin'i artık biliyorsun: değişkenler, fonksiyonlar, sınıflar, coroutine'ler. Şimdi en heyecanlı an geldi: yazdığın kodu kendi telefonunun ekranında görmek. Bunun için Android Studio gerekir; Google'ın Android uygulamaları için resmî ve ücretsiz geliştirme ortamı. Windows, macOS ve Linux'ta çalışır. Bu derste onu kuracak, ilk projeni oluşturacak, emülatörde ve telefonda çalıştıracak ve uygulamanın “günlüğünü” okumayı öğreneceksin.

Kurulum ve yeni proje

Android Studio'yu developer.android.com/studio adresinden indir. İlk açılışta Setup Wizard (kurulum sihirbazı) başlar ve gereken her şeyi kendisi indirir: Android SDK (kütüphaneler ve araçlar), emülatör ve platform araçları. Emülatör çok bellek ister; bu yüzden bilgisayarının RAM'i ne kadar fazlaysa çalışman o kadar rahat olur.

  1. 1
    Kur

    Kurulum dosyasını çalıştır, ardından Setup Wizard'da Standard kurulumu seç ve bileşenlerin inmesini bekle.

  2. 2
    Şablonu seç

    File › New › New Project… menüsünü aç, Phone and Tablet bölümünde Empty Activity şablonunu seç; bu şablon zaten Jetpack Compose ile kurulmuştur.

  3. 3
    Alanları doldur

    Name: Educora Notes, Package name: com.educora.notes. Minimum SDK için örneğin API 24 seç; sihirbaz bunun cihazların ne kadarını kapsadığını gösterir. Build configuration language olarak Kotlin DSL'i bırak ve Finish'e bas.

  4. 4
    Gradle senkronizasyonunu bekle

    İlk senkronizasyon kütüphaneleri internetten indirir ve birkaç dakika sürebilir. İlerlemeyi pencerenin altındaki durum çubuğunda görürsün.

Proje yapısı ve Gradle

Solda Project penceresi bulunur (Alt+1). Üst kısmında Android görünümü seçildiğinde dosyalar uygulama için kullanışlı bir düzende gruplanır. En önemli parçalar şunlardır:

  • MainActivity.kt — uygulamanın başlangıç ekranı; Kotlin kodu app/src/main içinde, com.educora.notes paketinde bulunur.
  • ui/theme/ klasörü — Color.kt, Type.kt, Theme.kt: uygulamanın Material 3 renkleri ve yazı tipleri.
  • AndroidManifest.xml — uygulamanın “kimliği”: adı, simgesi, ekranları (activity) ve izinleri, örneğin internet erişimi.
  • res/ — kaynaklar: drawable (görseller), mipmap (başlatıcı simgeleri), values/strings.xml (metinler ve çevirileri).
  • build.gradle.kts dosyaları ve gradle/libs.versions.toml — derleme ayarları ve tüm kütüphane sürümlerini tek yerde tutan sürüm kataloğu.
Tanım
Gradle

Android projelerinin derleme sistemi. Kodu derler, gereken kütüphaneleri (bağımlılıkları) internetten indirir ve her şeyi telefona kurulan bir APK ya da Google Play'e yüklenen bir AAB dosyasında toplar. Ayarları .kts dosyalarında Kotlin ile yazılır.

Kotlin
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.compose)
}

android {
    namespace = "com.educora.notes"
    compileSdk = 36

    defaultConfig {
        applicationId = "com.educora.notes"
        minSdk = 24
        targetSdk = 36
        versionCode = 1
        versionName = "0.1.0"
    }
    buildFeatures {
        compose = true
    }
}

dependencies {
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.material3)
    implementation(libs.androidx.activity.compose)
}
app/build.gradle.kts (sadeleştirilmiş). AGP 8.x projelerinde alias(libs.plugins.kotlin.android) satırı da bulunur; AGP 9'dan itibaren Kotlin desteği eklentiye yerleşiktir.
  • applicationId — uygulamanın Google Play'deki benzersiz kimliği.
  • minSdk — uygulamanın çalıştığı en eski Android sürümü; targetSdk — uygulamanın test edildiği ve davranışının uyarlandığı sürüm; compileSdk — derleme için kullanılan SDK.
  • versionCode ve versionName — uygulamanın sürümü; bunları yayımlama dersinde ayrıntılı ele alacağız.
  • libs.… — sürüm kataloğundan gelen adlar; Compose BOM (platform(...)), tüm Compose kütüphanelerinin sürümlerini birbiriyle uyumlu tutar.
Eski: build.gradle (Groovy)
android {
    namespace 'com.educora.notes'
    compileSdk 36
    defaultConfig {
        applicationId "com.educora.notes"
        minSdk 24
        versionCode 1
        versionName "0.1.0"
    }
}
dependencies {
    implementation libs.androidx.material3
}
Yeni: build.gradle.kts (Kotlin DSL)
android {
    namespace = "com.educora.notes"
    compileSdk = 36
    defaultConfig {
        applicationId = "com.educora.notes"
        minSdk = 24
        versionCode = 1
        versionName = "0.1.0"
    }
}
dependencies {
    implementation(libs.androidx.material3)
}
Eski projelerde Groovy, yenilerinde Kotlin DSL görürsün. Kotlin DSL'de atama = ile, metinler çift tırnakla, fonksiyonlar parantezle yazılır; düzenleyici de otomatik tamamlama ve hata denetimi sunar.

MainActivity: uygulamanın giriş kapısı

Kotlin
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            EducoraNotesTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Greeting(
                        name = "Android",
                        modifier = Modifier.padding(innerPadding)
                    )
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
    Text(text = "Hello $name!", modifier = modifier)
}
Şablonun oluşturduğu kod. Ekranda: sol üst köşede, durum çubuğunun altında “Hello Android!” yazısı.

Activity, uygulamanın bir penceresidir. Sistem onu oluştururken onCreate fonksiyonunu çağırır. enableEdgeToEdge(), içeriği tüm ekrana, durum ve gezinme çubuklarının altına kadar yayar. setContent { } ise ekranın içeriğini Compose ile belirler: tema, Scaffold iskeleti ve Greeting fonksiyonu. innerPadding, metnin sistem çubuklarının altında kalmasını önler.

Emülatörde ve telefonda çalıştır

Uygulamayı iki yerde çalıştırabilirsin: bilgisayarında çalışan sanal bir telefonda, yani emülatörde (AVD, Android Virtual Device) ya da USB kablo veya Wi-Fi ile bağlanmış gerçek bir telefonda. Gerçek cihaz genellikle daha hızlıdır ve dokunmayı, kamerayı, sensörleri gerçekten test etmeni sağlar.

  1. 1
    Sanal cihaz oluştur

    View › Tool Windows › Device Manager penceresini aç, + düğmesine bas ve Create Virtual Device'ı seç. Bir telefon modeli (örneğin bir Pixel) ve en son Android sürümünün sistem görüntüsünü seçip Finish'e bas.

  2. 2
    Çalıştır

    Araç çubuğundaki listeden cihazı seç ve yeşil Run üçgenine ya da Shift+F10'a bas. Gradle uygulamayı derler, cihaza kurar ve açar.

  3. 3
    Telefonda geliştirici seçeneklerini aç

    Settings › About phone bölümünde Build number satırına yedi kez dokun. Ardından Developer options bölümünde USB debugging'i aç (menünün yeri üreticiye göre değişebilir).

  4. 4
    Bağla ve izin ver

    Telefonu USB ile bağla ve ekrandaki “Allow USB debugging?” sorusunu onayla. Kablosuz çalışmak için (Android 11+) Wireless debugging'i aç ve Android Studio'da Pair Devices Using Wi-Fi ile QR kodunu tara.

Logcat: uygulamanın günlüğü

Telefonda println çıktısını göreceğin bir konsol yoktur. Android'de mesajlar sistem günlüğüne yazılır; Android Studio da onları Logcat penceresinde gösterir (View › Tool Windows › Logcat). Mesaj yazmak için Log sınıfı kullanılır; her mesajın bir etiketi (kaynağının adı) ve bir düzeyi vardır: Log.v (verbose), Log.d (debug), Log.i (info), Log.w (warning), Log.e (error).

Kotlin
private const val TAG = "MainActivity"

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d(TAG, "onCreate called")
        val lessons = listOf("Kotlin", "Compose", "Gradle")
        Log.i(TAG, "Loaded ${lessons.size} lessons")
        Log.w(TAG, "No internet, showing cached data")
        // setContent { ... }
    }
}
Logcat'te tag:MainActivity filtresiyle D, I ve W düzeyli üç satır görürsün; her satırda zaman, paket adı ve mesaj bulunur.
SorguNe gösterir
package:mineyalnızca açık projenin uygulamalarından gelen mesajlar
tag:MainActivitybu etiketli mesajlar
level:WARNWARN ve daha ciddi düzeyler (ERROR, ASSERT)
is:crashuygulama çökmeleri
-tag:Choreographerbu etiketi gizler (- olumsuzlar)
Sorgular birleştirilebilir: package:mine level:ERROR.
uygulamayı çalıştırmak (Mac: Ctrl+R)Shift+F10
hata ayıklayıcıyla çalıştırmak (Mac: Ctrl+D)Shift+F9
değişiklikleri çalışan uygulamaya göndermek — Apply Changes and Restart Activity (Mac: Ctrl+Cmd+R)Ctrl+F10
projeyi çalıştırmadan derlemek (Mac: Cmd+F9)Ctrl+F9
Logcat penceresini göstermek ya da gizlemek (Mac: Cmd+6)Alt+6
herhangi bir komutu adıyla bulmak — Find Action (Mac: Cmd+Shift+A)Ctrl+Shift+A

Önemli noktalar

  • Android Studio, Google'ın resmî ve ücretsiz ortamıdır; Empty Activity şablonu hazır bir Compose projesi oluşturur.
  • Gradle projeyi derler; ayarlar build.gradle.kts'te, kütüphane sürümleri libs.versions.toml'da tutulur.
  • applicationId, uygulamanın Google Play'deki benzersiz adıdır ve yayımlandıktan sonra değişmez.
  • Uygulama emülatörde (AVD) ya da USB veya Wi-Fi ile bağlı bir telefonda çalıştırılır; telefonda önce geliştirici seçenekleri açılmalıdır.
  • Log.d/i/w/e mesajları Logcat'e yazar; package:mine, tag: ve level: filtreleri aradığını bulmana yardım eder.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
applicationId, minSdk ve versionCode hangi dosyada belirlenir?