İlk Android Uygulamanız: Fikirden Çalışan APK'ya Yolculuk
Android uygulaması yazmak için: Android Studio'yu yükleyin, Kotlin kullanın, New Project → Empty Activity yoluyla bir proje oluşturun, UI'ı res/layout içinde tanımlayın, MainActivity'ye mantık ekleyin ve Build → Build APK(s) yoluyla APK'yı derleyin. Aşağıda somut adımlar, kodlar ve pratik tavsiyeler yer almaktadır.
İçindekiler {{TOC_AUTOMATIC}}
Nereden başlamalı: Araçlar ve dil seçimi
- Android Studio'yu yükleyin (SDK ve JDK dahildir). Önerilen sistem gereksinimleri: Rahat çalışma için 16 GB RAM; 10–20 GB boş alan.
- Dil seçimi: Kotlin — modern, kompakt ve Google tarafından önerilen; Java — deneyiminiz varsa kabul edilebilir.
- Test cihazını ayarlayın: Device Manager üzerinden AVD (emülatör) veya gerçek bir telefon (geliştirici modunu ve USB hata ayıklamayı açın).
Proje oluştururken minimum ayarlar:
- Şablon: Empty Activity
- Dil: Kotlin
- Minimum SDK: API 21+ (veya hedef kitlenize göre)
Bilgisayarınız zayıfsa, gerçek bir telefonda test edin — başlatma ve hata ayıklama genellikle kaynak yoğun emülatöre kıyasla daha hızlı gerçekleşir.
Proje yapısı ve temel dosyalar
Android projesinde önemli olanlara kısa bir bakış (Project → Android görünümü):
- app/src/main/AndroidManifest.xml — Activity ve izinlerin kaydı.
- app/src/main/java/... — Kotlin/Java dosyaları (MainActivity vb.).
- app/src/main/res/layout/*.xml — Ekran düzenleri.
- app/build.gradle — Bağımlılıklar ve derleme parametreleri.
Basit bir manifest örneği (başlatmak için minimum):
<manifest package="com.example.myfirstapp"
xmlns:android="http://schemas.android.com/apk/res/android">
<application android:label="MyFirstApp" android:icon="@mipmap/ic_launcher">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml düzen örneği:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:gravity="center_horizontal"
android:padding="16dp">
<TextView android:id="@+id/tvGreeting"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Butona basın" android:textSize="22sp" android:padding="8dp"/>
<Button android:id="@+id/btnChangeText"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Metni değiştir" android:layout_marginTop="16dp"/>
</LinearLayout>
Kotlin ile minimal Activity (doğru onCreate):
package com.example.myfirstapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val tvGreeting: TextView = findViewById(R.id.tvGreeting)
val btnChangeText: Button = findViewById(R.id.btnChangeText)
btnChangeText.setOnClickListener {
tvGreeting.text = "Metin değiştirildi! Butona bastınız."
}
}
}
Modern alternatifler: ViewBinding/Databinding veya Jetpack Compose, findViewById olmadan UI'ı daha kompakt ve güvenli bir şekilde yazmanızı sağlar.
Derleme, çalıştırma ve hata ayıklama
- Çalıştırma: Panelde cihaz/AVD seçin ve Run ▶ butonuna basın.
- Hata ayıklama: Breakpoint koyun, loglar için Logcat'i kullanın, optimizasyon için CPU/Bellek profilleyicisini kullanın.
- APK derleme: Build → Build Bundle(s) / APK(s) → Build APK(s). Yayınlama için Generate Signed Bundle / APK yoluyla imzalı AAB derleyin.
Sürüm öncesi kontroller:
- minSdk ve targetSdk doğru seçilmiş;
- İzinler minimal tutulmuş ve dinamik olarak isteniyor (tehlikeli izinler için);
- Çeşitli API'lerde/ekranlarda test edilmiş;
- Görseller ve bağımlılıklar optimize edilmiş.
Sonraki adımlar ve en iyi uygulamalar
- Mimari: MVVM + ViewModel + LiveData/StateFlow. İş mantığını Activity/Fragment dışına çıkarın.
- Yerel veritabanı: Room.
- Ağ: Retrofit + OkHttp + coroutine'ler/Flow.
- Navigasyon: Geçişleri yönetmek için Jetpack Navigation.
- Test etme: Birim testleri ve UI testleri (Espresso/Compose Testing).
Beceri geliştirme için küçük bir plan: Basit bir "Yapılacaklar Listesi" uygulaması uygulayın → Room'a kaydetme ekleyin → API ile senkronizasyon yapın → ViewModel ve navigasyonu entegre edin.
Sık yapılan hatalar
- Abonelikleri/coroutine'leri kapatmamak — bellek sızıntıları.
- Ağ işlemlerinin UI thread'inde yapılması.
- Activity/Fragment içinde katı mantık kullanılması.
- İzinlerin ve yaşam döngüsü durumunun yanlış işlenmesi.
- Farklı Android sürümlerinde ve ekran yönelimlerinde test etmenin ihmal edilmesi.
Emülatör yavaş olabilir: Donanım sanallaştırmayı (HAXM/Hypervisor) kontrol edin veya gerçek bir cihaz kullanın.
SSS
- Kotlin mi yoksa Java mı — hangisi seçilmeli?
Yeni projeler için Kotlin. Java, zaten güçlü bilginiz ve çok sayıda mevcut kodunuz varsa uygundur. - findViewById sayısını nasıl azaltabilirim?
ViewBinding'i etkinleştirin veya Jetpack Compose'a geçin. - Gizli bilgiler (API anahtarları) nasıl saklanır?
Kodda saklamayın; sunucu tarafı proxy kullanın veya gradle.properties ve imza anahtarlarını ayrı tutun, ancak depoya commit etmeyin. - Başlangıçta çoklu thread mimarisine gerek var mı?
Başlangıçta arka plan görevleri için coroutine'leri kullanın; çoklu thread karmaşıklığı ölçeklendikçe artacaktır.
Bu set, çalışan bir Android uygulaması oluşturmak, proje yapısını anlamak ve işlevsellik büyüdükçe ağ, veritabanı ve mimari ekleyerek ilerlemek için yeterlidir.