Android Studio'da APK Derleme: Hızlı ve Hatısız

Kerem Aydın·9 Temmuz 2026·⏱3 dk

Kısa cevap: hata ayıklama için Build > Build APK(s) veya ./gradlew assembleDebug kullanın; release için — Build > Generate Signed Bundle / APK → APK seçeneğini kullanın, keystore belirtin veya oluşturun, build.gradle içinde signingConfig yapılandırmasını yapın ve app-release.apk dosyasını app/build/outputs/apk/release/ dizininden dışa aktarın.

Proje Hazırlığı

  1. build.gradle (Module: app) dosyasında compileSdk, minSdk ve targetSdk değerlerini kontrol edin.
  2. Release için R8/ProGuard ekleyin: buildTypes.release içinde minifyEnabled true ve proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' ayarlarını etkinleştirin.
  3. Android Studio ve Android Gradle Plugin'i güncelleyin (AGP 8.x+ önerilir).
  4. Şifreleri depoda saklamayın — gradle.properties (yerel) veya ortam değişkenlerini ve keystore için .gitignore kullanın.

Hızlı hata ayıklama için debug anahtarıyla otomatik imzalamayı bırakın (~/.android/debug.keystore). Release hazırlığı sırasında Instant Run/Apply Changes özelliğini devre dışı bırakın.

Debug APK Derleme

  • GUI üzerinden: Build > Build Bundle(s) / APK(s) > Build APK(s). Dosya app/build/outputs/apk/debug/app-debug.apk konumunda oluşur.
  • Terminal üzerinden: ./gradlew assembleDebug
  • Cihaza yükleme: Run > Run 'app' veya adb install -r app/build/outputs/apk/debug/app-debug.apk Debug derlemesi yayınlama için uygun değildir: hata ayıklama bilgileri içerir ve debug anahtarıyla otomatik olarak imzalanmıştır.

Release APK Derleme ve İmzalama

Adım adım:

  1. Build > Generate Signed Bundle / APK → APK seçeneğini belirleyin.
  2. Anahtar yoksa — Create new: keystore dosya adı, alias, şifreler ve geçerlilik süresi belirtin (>25 yıl önerilir).
  3. build variant = release seçin, gerekli ProGuard/R8 bayraklarını etkinleştirin.
  4. Finish — APK app/build/outputs/apk/release/app-release.apk konumunda oluşur.

build.gradle içinde signingConfigs örneği (şifreleri açıkça depoda saklamayın):

android {
  signingConfigs {
    release {
      storeFile file("keystore.jks")
      storePassword System.getenv("STORE_PASS")
      keyAlias "myAlias"
      keyPassword System.getenv("KEY_PASS")
    }
  }
  buildTypes {
    release {
      signingConfig signingConfigs.release
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}

keytool ile keystore oluşturma: keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

Keystore veya şifrenin kaybedilmesi, Google Play'de güncelleme yayınlamayı imkansız hale getirir. Dosyayı ve şifreleri güvenli bir yerde saklayın.

Doğrulama ve Dışa Aktarma

  • Dosya konumu: app/build/outputs/apk/[debug|release]/.
  • APK analizi: Build > Analyze APK — imzayı, boyutu ve içeriği kontrol eder.
  • Yükleme: adb install -r app-release.apk
  • Google Play'de yayınlama için AAB tercih edilir: Build > Generate Signed Bundle, Google cihazlar için APK'yı optimize eder.

Sık Karşılaşılan Hatalar

  • "Keystore was tampered with, or password was incorrect" — yanlış şifre veya bozulmuş keystore dosyası.
  • Release yerine debug anahtarıyla imzalama — signingConfig'i kontrol edin.
  • proguard-rules unutulması — APK minifikasyon sırasında bozulabilir (reflection/serializable için kurallar ekleyin).
  • Şifrelerin VCS'de saklanması — sızıntı riski.

SSS

  • Debug APK'yı imzalamak gerekir mi? Hayır, debug anahtarıyla otomatik olarak imzalanır ve yayınlama için tasarlanmamıştır.
  • Keystore nerede saklanmalı? Güvenli bir depolama alanında (vault) veya deponun dışında yerel olarak, yedekleme ile birlikte.
  • CI üzerinden nasıl derlenir? Şifreler için ortam değişkenleri ve keystore'un güvenli saklanması ile ./gradlew assembleRelease kullanın.

Başarılı derlemeler — adımları takip edin, anahtarları güvenli şekilde saklayın ve yayınlamadan önce APK'yı kontrol edin.