Android'de release keystore oluşturma ve kullanma
Kısa cevap: keytool komutuyla bir release-keystore oluşturun, alias belirtin, geçerlilik süresini >= 25 yıl olarak ayarlayın, .jks dosyasını kaydedin ve signingConfig içinde bağlayın — yalnızca bu şekilde uygulamanız Google Play tarafından kabul edilir. Aşağıda pratik bir adım adım kılavuz ve güvenlik önerileri yer almaktadır.
Keystore neden gereklidir ve nelere dikkat edilmeli
Keystore, APK/AAB dosyalarınızı dijital olarak imzaladığınız özel anahtarı içeren bir dosyadır (.jks/.keystore). Google Play, sahipliğinizi ve güncellemelerinizi doğrulamak için release anahtarının imzasını zorunlu kılar. Önemli noktalar:
- Anahtarı bir kez oluşturun ve yedeklerini saklayın. Anahtar kaybı, uygulama güncellemelerini zorlaştırır veya imkânsız hale getirir.
- RSA 2048+ kullanın, geçerlilik süresi en az 25 yıl olsun (yaklaşık 10000+ gün önerilir).
- Release için debug-keystore kullanmayın.
Keystore veya parolayı kaybederseniz, güncellemeler sorunlu hale gelir — Google Play App Signing üzerinden karmaşık bir geçiş süreci gerekir.
Adım adım: Keystore nasıl oluşturulur
- JDK 11+ kurulu olduğundan emin olun (keytool JDK ile birlikte gelir). Kontrol edin: keytool -version.
- Terminali açın ve aşağıdaki komutu çalıştırın (parametreleri kendinize göre değiştirin):
keytool -genkey -v -keystore ~/my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
- Keystore için güçlü bir parola ve (isteğe bağlı olarak) anahtar için ayrı bir parola girin. Ad/organizasyon alanlarını ve iki harfli ülke kodunu doldurun.
- Oluşturulan dosyayı kontrol edin:
keytool -list -v -keystore ~/my-release-key.jks
Öneriler:
- .jks dosyasını depodan uzakta tutun veya .gitignore'a ekleyin.
- En az 2–3 şifreli yedek oluşturun ve parolaları bir parola yöneticisinde saklayın.
Ekip çalışması için Google Play App Signing'i kullanın: Ana anahtarı Google'a teslim edersiniz ve yükleme için upload key kullanırsınız — bu, kayıp riskini azaltır.
Android Studio entegrasyonu ve derleme
- my-release-key.jks dosyasını projede güvenli bir konuma taşıyın (örneğin app/ dizinine).
- Projenin kök dizininde keystore.properties oluşturun ve .gitignore'a ekleyin:
storePassword=Parolanız
keyPassword=Parolanız
keyAlias=my-key-alias
storeFile=app/my-release-key.jks
- Kök build.gradle'da (veya Kotlin betiğinde) özellikleri yükleyin:
val keystoreProps = java.util.Properties().apply {
load(java.io.FileInputStream(rootProject.file("keystore.properties")))
}
- app modülünde signingConfigs ekleyin ve release ile ilişkilendirin:
signingConfigs {
create("release") {
storeFile = file(keystoreProps["storeFile"] as String)
storePassword = keystoreProps["storePassword"] as String
keyAlias = keystoreProps["keyAlias"] as String
keyPassword = keystoreProps["keyPassword"] as String
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
- Build > Generate Signed Bundle/APK yoluyla veya CI için Gradle görevi aracılığıyla imzalamayı gerçekleştirin: gizli anahtarları (GitHub Actions Secrets) kullanın ve .jks dosyasını güvenli bir yapıt olarak yükleyin.
Sık yapılan hatalar
- Keystore was tampered with, or password was incorrect — yanlış parola. Geri alınamaz; yeni bir anahtar oluşturmanız ve geçiş sürecini tamamlamanız gerekir.
- Anahtarın süresi dolmuş — validity değerini >= 9125 (25 yıl) veya 10000+ gün olarak ayarlayın.
- Güncelleme sırasında anahtar uyumsuzluğu — alias ve keystore'un önceki dosya ile eşleştiğinden emin olun: keytool -list -v -keystore old.jks
- Linux/Mac üzerinde erişim izinleri: chmod 600 my-release-key.jks
Keystore'u şifreli bir depoda (Bitwarden/1Password) yedekleyin ve kopyalarını harici depolama birimlerinde saklayın.
SSS
- .jks dosyasını depoda saklamak mümkün mü? — Hayır. Dosyayı genel deponun dışında tutun ve .gitignore'a ekleyin.
- Keystore'u kaybedersem ne yapmalıyım? — Google Play desteğiyle iletişime geçin: Yalnızca App Signing üzerinden sınırlı bir geçiş mümkündür, ancak süreç onaylar ve upload key gerektirir.
- App Bundle kullanıyorsam kendi anahtarıma ihtiyacım var mı? — Evet: AAB ile bile bir release anahtarınız olmalıdır (veya anahtarı App Signing'de saklaması için Google'a güveniyorsunuz).
Artık keystore oluşturabilir, signingConfig'i yapılandırabilir ve Google Play'e yüklemek için imzalı AAB/APK derleyebilirsiniz.