- Üyelik Tarihi
- 24 Ağu 2026
- Mesajlar
- 16
- Beğeniler
- 1
- Puanlar
- 3
Merhaba arkadaşlar,
Bu konuda Android uygulama geliştirirken ve APK/AAB paketi hazırlarken karşımıza çıkan en önemli konulardan biri olan Keystore ve uygulama imzalama işlemlerini detaylı şekilde anlatacağız.
Özellikle ilk kez Google Play'e uygulama yükleyen kişiler için keystore, alias, SHA-1, SHA-256, upload key ve signing key gibi kavramlar ilk başta biraz karışık gelebilir.
Ancak mantığını öğrendiğinizde aslında oldukça basittir.
Keystore konusunda yapılacak bir hata uygulamanın ileride güncellenmesini etkileyebileceğinden, uygulamanızı yayınlamadan önce bu bölümü dikkatli şekilde okumanızı tavsiye ediyoruz.
Keystore, Android uygulamanızı imzalamak için kullanılan özel anahtarların ve sertifikaların saklandığı dosyadır.
Android tarafında uygulamalar yayınlanmadan önce dijital olarak imzalanır. APK dosyalarının bir Android cihazına kurulabilmesi veya mevcut uygulamanın güncellenebilmesi için imzalama önemli bir parçadır.
Keystore dosyaları genellikle şu uzantılardan biriyle karşınıza çıkar:
uygulama.jks
veya
uygulama.keystore
Burada dikkat edilmesi gereken nokta, keystore dosyasının sıradan bir proje dosyası olmadığıdır.
Özellikle kendi uygulama imzalama anahtarınızı yönetiyorsanız bu dosyanın kaybolması ileride ciddi problemlere neden olabilir.
Android, uygulamanın yeni sürümünün mevcut uygulamayla ilişkisini doğrulamak için imzalama sisteminden yararlanır.
Basit bir örnek verelim.
Telefonunuzda şu uygulamanın yüklü olduğunu düşünelim:
MertBOSS v1.0
Bir süre sonra uygulamanın:
MertBOSS v1.1
sürümünü yayınladınız.
Android'in bunu mevcut uygulamanın devamı olan geçerli bir güncelleme olarak değerlendirebilmesi için uygulamanın kimliği ve imzalama yapısının doğru olması gerekir.
Bu nedenle keystore yalnızca "APK oluştururken seçtiğimiz bir dosya" olarak düşünülmemelidir.
Uygulamanızın yayın ve güncelleme sürecinin önemli parçalarından biridir.
Keystore oluştururken birkaç farklı bilgiyle karşılaşırsınız.
Bunların ne işe yaradığını bilmeniz daha sonra yaşayabileceğiniz karışıklıkları önler.
Oluşturulacak .jks dosyasının bilgisayarınızda kaydedileceği konumdur.
Örneğin:
D:\AndroidKeys\mertboss-release.jks
Dosyayı proje klasörünün içerisinde bırakıp daha sonra projeyle beraber yanlışlıkla silmek yerine ayrı ve güvenli bir yerde saklamanız daha doğru olacaktır.
Keystore dosyanızı koruyan paroladır.
Kolay tahmin edilebilecek bir parola kullanmayın ve parolanızı güvenli şekilde saklayın.
Keystore içerisinde bulunan anahtarın ismidir.
Örneğin:
mertboss
release
production
gibi bir alias belirlenebilir.
Alias değerini de daha sonra uygulamayı imzalarken kullanacağınız için kaybetmemeniz gerekir.
Keystore içerisindeki ilgili private key için kullanılan paroladır.
Android Studio üzerinden oluşturma işlemi sırasında bu bilgi de sizden istenir.
Oluşturulan anahtarın ne kadar süre geçerli olacağını belirtir.
Android'in resmi dokümantasyonu, anahtarın uygulamanın beklenen kullanım ömrü boyunca güncellemeleri imzalayabilecek kadar uzun süre geçerli tutulmasını ve Android Studio ile oluştururken en az 25 yıllık geçerlilik verilmesini öneriyor.
Android Studio kullanıyorsanız keystore oluşturmak için ekstra bir programa ihtiyacınız bulunmaz.
Projenizi açtıktan sonra:
Build → Generate Signed Bundle / APK
bölümüne girin.
Buradan oluşturmak istediğiniz pakete göre:
Android App Bundle
veya
APK
seçeneğini seçebilirsiniz.
Sonraki ekranda Key store path bölümünün altında bulunan Create new seçeneğine tıklayın.
Karşınıza yeni keystore oluşturma ekranı gelecektir. Android Studio'nun güncel resmi yönergesinde de süreç bu şekilde ilerlemektedir.
Burada sizden temel olarak:
Key Store Path
Password
Alias
Key Password
Validity
Certificate bilgileri
istenir.
Bilgileri doldurduktan sonra işlemi tamamladığınızda .jks uzantılı keystore dosyanız oluşturulacaktır.
Keystore dosyanız hazırsa tekrar:
Build → Generate Signed Bundle / APK
bölümüne girin.
APK oluşturacaksanız:
APK
Google Play için AAB oluşturacaksanız:
Android App Bundle
seçebilirsiniz.
Ardından daha önce oluşturduğunuz keystore dosyasının konumunu gösterin ve ilgili bilgileri girin.
Örneğin:
Key store path: mertboss-release.jks
Key alias: mertboss
Key store password: ••••••••
Key password: ••••••••
Bilgiler doğruysa Android Studio ilgili anahtarı kullanarak release paketinizi imzalayabilir.
Burada en çok karıştırılan noktalardan biri budur.
Android Studio geliştirme sırasında uygulamanızı çalıştırdığınızda genellikle otomatik oluşturulan bir debug keystore kullanır.
Yani her test yaptığınızda manuel olarak keystore oluşturmanız gerekmez.
Ancak debug anahtarı geliştirme içindir. Google'ın dokümantasyonuna göre çoğu uygulama mağazası debug sertifikasıyla imzalanmış uygulamaları yayın için kabul etmez.
Gerçek kullanıcıya dağıtılacak sürüm için release imzalama kullanılmalıdır.
Kısaca:
Debug → Geliştirme ve test
Release → Gerçek yayın
olarak düşünebilirsiniz.
Google Play tarafında işler biraz daha farklıdır.
Özellikle Play App Signing kullanıldığında iki kavramı birbirinden ayırmak gerekir:
Son kullanıcının cihazına dağıtılan APK'ların imzalanmasında kullanılan asıl uygulama imzalama anahtarıdır.
Play App Signing kullanıldığında bu anahtarı Google yönetir ve korur.
Google Play'e göndereceğiniz AAB veya APK paketini yükleme öncesinde imzalamak için kullandığınız anahtardır.
Google Play bu anahtarın sertifikası üzerinden yüklemenin doğruluğunu kontrol eder; dağıtılacak APK'ları ise app signing key ile imzalar.
Dolayısıyla:
Upload Key ≠ App Signing Key
olabilir.
Hatta Google, güvenlik açısından bunların ayrı anahtarlar olmasını tavsiye etmektedir.
Play App Signing kullanıldığında uygulamanın asıl imzalama anahtarının korunması Google Play tarafından gerçekleştirilir.
Siz uygulamanızın yeni sürümünü upload key ile imzalayıp Play Console'a gönderirsiniz.
Google Play ise dağıtılacak APK'ları uygulamanın app signing key anahtarıyla imzalar.
Bunun önemli avantajlarından biri upload key'in kaybolması veya ele geçirilmesi durumunda Play Console üzerinden upload key sıfırlama talebinde bulunulabilmesidir.
Bu yüzden kendi yönettiğiniz eski tip imzalama yapısıyla Play App Signing kullanılan bir uygulamanın anahtar süreçleri birbirine karıştırılmamalıdır.
Android uygulama geliştirirken zaman zaman sizden:
SHA-1
veya
SHA-256
istenebilir.
Bunlar sertifikanızın parmak izleridir.
Özellikle bazı API ve üçüncü taraf servisleri uygulamanızı tanımlamak için paket adıyla beraber sertifika parmak izini isteyebilir.
Play Console tarafında upload ve app signing sertifikalarının SHA-1 ve SHA-256 parmak izleri görüntülenebilir.
Burada önemli bir ayrıntı vardır:
Debug SHA-1 ile Release SHA-1 aynı olmak zorunda değildir.
Bu nedenle uygulamanız Android Studio üzerinden test ederken bir servisle düzgün çalışıyor fakat release APK/AAB sonrasında çalışmıyorsa kontrol edilmesi gereken noktalardan biri sertifika yapılandırmasıdır.
Bu sorunun cevabı kullandığınız imzalama sistemine göre değişebilir.
Play App Signing kullanıyorsanız upload key kaybolduğunda veya güvenliği ihlal edildiğinde yeni bir upload key için sıfırlama süreci bulunmaktadır. Çünkü uygulamanın asıl signing key'i Google tarafından korunmaktadır.
Fakat kendi app signing key'inizi tamamen kendiniz yönetiyorsanız durum çok daha ciddi olabilir.
Bu nedenle:
"Bilgisayarımda duruyor, bir şey olmaz."
mantığıyla hareket etmeyin.
Bilgisayar bozulabilir.
Disk arızalanabilir.
Dosyalar yanlışlıkla silinebilir.
Format atılabilir.
Proje klasörü kaybolabilir.
Bu yüzden yayın öncesinde anahtar yönetimi ve yedekleme planınızı oluşturun.
En azından aşağıdaki bilgileri güvenli şekilde saklamanızı tavsiye ediyoruz:
Ancak bütün bunları tek bir .txt dosyasına yazıp keystore ile aynı klasörde tutmak iyi bir güvenlik yaklaşımı değildir.
Özellikle production uygulamalarda private key ve parolaların erişimini sınırlandırın.
Keystore dosyanızı:
GitHub'a yüklemeyin.
Forumda paylaşmayın.
Discord üzerinden göndermeyin.
Projenin herkese açık kaynak kodunun içerisinde bırakmayın.
Keystore private key içerebildiğinden gizli tutulmalıdır. Buna karşılık public certificate gerektiğinde paylaşılabilir.
Production keystore dosyanızı public repository içerisine koymamanız gerekir.
Aynı şekilde gerçek şifrelerinizi doğrudan:
build.gradle
gradle.properties
veya kaynak kod içerisinde açık şekilde bırakmak da güvenlik açısından doğru değildir.
Özellikle ekip halinde geliştirilen projelerde imzalama bilgilerinin kimler tarafından erişilebilir olduğunu kontrol edin.
Bir private repository kullanmanız da bütün sırları gelişigüzel repository içerisinde tutmanız gerektiği anlamına gelmez.
Daha önce yayınladığınız bir uygulamanın yeni sürümünü hazırlarken en çok dikkat edilmesi gereken bölümlerden biri budur.
Android'in güvenli güncelleme modelinde uygulama imzası kritik rol oynar. Google'ın Android dokümantasyonunda da app signing key'in uygulamanın yaşam döngüsü boyunca kullanılan temel kimlik unsurlarından biri olduğu belirtilmektedir.
Bu yüzden yeni sürüm hazırlarken:
"Yeni keystore oluşturayım, bununla güncellerim."
şeklinde hareket etmeyin.
Önce mevcut uygulamanızın nasıl imzalandığını ve Play App Signing yapılandırmasını kontrol edin.
Özellikle başka bir geliştiriciden devralınmış projelerde bu kontrol yapılmadan yeni release hazırlanmamalıdır.
Keystore dosyasının bilgisayarınızda bulunması tek başına yeterli değildir.
İmzalama sırasında gerekli parola ve alias bilgilerinin de doğru olması gerekir.
Bu nedenle keystore oluşturduğunuz anda bilgileri güvenli bir parola yöneticisi veya kurumunuzun kullandığı güvenli kimlik bilgisi yönetim sistemine kaydetmeniz iyi bir yöntemdir.
Sorun yaşandıktan sonra kurtarmaya çalışmak yerine en başta düzgün bir yedekleme yapmak çok daha sağlıklıdır.
Teknik olarak bir keystore içerisinde birden fazla key bulunabilir ve aynı anahtarın farklı uygulamalarda kullanıldığı yapılar da vardır.
Ancak burada önemli olan anahtar yönetimi stratejisidir.
Bir anahtarın birçok uygulamada kullanılması durumunda o anahtarın güvenliğiyle ilgili yaşanacak bir problem birden fazla projeyi etkileyebilir.
Bu nedenle özellikle müşteri projelerinde hangi uygulamanın hangi anahtarla imzalandığını düzenli şekilde kayıt altında tutmanız faydalıdır.
Girilen keystore parolası yanlıştır.
Doğru keystore dosyasını seçtiğinizden ve parolanın doğru olduğundan emin olun.
Seçtiğiniz keystore içerisinde girdiğiniz alias mevcut olmayabilir.
Doğru alias bilgisini kontrol edin.
Paket adı veya imzalama sertifikası farklı olabilir.
Özellikle aynı uygulamanın debug ve release sürümleri arasında geçiş yaparken bu durumla karşılaşabilirsiniz.
Yanlış upload key ile imzalama, yanlış package name veya sürüm yapılandırması gibi nedenler kontrol edilmelidir.
Play Console'un verdiği hata mesajını okumadan yeni keystore oluşturarak tekrar tekrar deneme yapmak problemi daha karmaşık hale getirebilir.
Play App Signing kullanıyorsanız yalnızca yerel keystore sertifikanızı değil, Play Console'daki app signing certificate değerlerini de kontrol edin.
Son olarak birkaç önemli noktayı toparlayalım.
1. Keystore dosyanıza test123 gibi basit parolalar vermeyin.
2. Production keystore dosyanızı herkese açık alanlara yüklemeyin.
3. Keystore'un yalnızca tek kopyasını bilgisayarınızda bırakmayın.
4. Hangi keystore'un hangi uygulamaya ait olduğunu unutmayın.
5. Mevcut bir uygulamaya güncelleme göndermeden önce imzalama yapılandırmasını kontrol edin.
6. Debug keystore ile production keystore'u birbirine karıştırmayın.
7. Keystore parolalarını kaynak kod içerisine gelişigüzel yazmayın.
8. Başka bir geliştiriciye proje devrediyorsanız imzalama sürecinin nasıl yönetildiğini de açıkça belirtin.
Keystore, Android uygulamanızın imzalama anahtarlarını ve sertifikalarını saklayan önemli bir dosyadır. Android uygulamalarında imzalama hem ilk yayın hem de sonraki güncellemeler açısından kritik öneme sahiptir.
İlk defa uygulama yayınlayacaksanız keystore oluşturup geçmek yerine keystore, upload key, app signing key ve Play App Signing arasındaki farkı anlamanızı tavsiye ediyoruz.
En önemlisi de oluşturduğunuz anahtarların güvenliğini ve yedeklerini uygulamanız yayınlandıktan sonra düşünmeye başlamayın.
Uygulamayı yayınlamadan önce bu işlemleri tamamlayın.
Keystore veya imzalama sırasında bir sorunla karşılaşırsanız forumda yeni konu oluştururken Android Studio sürümünüzü, APK mı AAB mi hazırladığınızı ve aldığınız hata mesajını paylaşabilirsiniz.
Private key, keystore parolası veya diğer gizli bilgilerinizi konu içerisine kesinlikle eklemeyin.
Herkese iyi geliştirmeler.
Teknik referans olarak Android'in resmi uygulama imzalama dokümantasyonuna da bakabilirsiniz.
Bu konuda Android uygulama geliştirirken ve APK/AAB paketi hazırlarken karşımıza çıkan en önemli konulardan biri olan Keystore ve uygulama imzalama işlemlerini detaylı şekilde anlatacağız.
Özellikle ilk kez Google Play'e uygulama yükleyen kişiler için keystore, alias, SHA-1, SHA-256, upload key ve signing key gibi kavramlar ilk başta biraz karışık gelebilir.
Ancak mantığını öğrendiğinizde aslında oldukça basittir.
Keystore konusunda yapılacak bir hata uygulamanın ileride güncellenmesini etkileyebileceğinden, uygulamanızı yayınlamadan önce bu bölümü dikkatli şekilde okumanızı tavsiye ediyoruz.
Keystore Nedir?
Keystore, Android uygulamanızı imzalamak için kullanılan özel anahtarların ve sertifikaların saklandığı dosyadır.
Android tarafında uygulamalar yayınlanmadan önce dijital olarak imzalanır. APK dosyalarının bir Android cihazına kurulabilmesi veya mevcut uygulamanın güncellenebilmesi için imzalama önemli bir parçadır.
Keystore dosyaları genellikle şu uzantılardan biriyle karşınıza çıkar:
uygulama.jks
veya
uygulama.keystore
Burada dikkat edilmesi gereken nokta, keystore dosyasının sıradan bir proje dosyası olmadığıdır.
Özellikle kendi uygulama imzalama anahtarınızı yönetiyorsanız bu dosyanın kaybolması ileride ciddi problemlere neden olabilir.
Uygulama İmzalama Neden Gereklidir?
Android, uygulamanın yeni sürümünün mevcut uygulamayla ilişkisini doğrulamak için imzalama sisteminden yararlanır.
Basit bir örnek verelim.
Telefonunuzda şu uygulamanın yüklü olduğunu düşünelim:
MertBOSS v1.0
Bir süre sonra uygulamanın:
MertBOSS v1.1
sürümünü yayınladınız.
Android'in bunu mevcut uygulamanın devamı olan geçerli bir güncelleme olarak değerlendirebilmesi için uygulamanın kimliği ve imzalama yapısının doğru olması gerekir.
Bu nedenle keystore yalnızca "APK oluştururken seçtiğimiz bir dosya" olarak düşünülmemelidir.
Uygulamanızın yayın ve güncelleme sürecinin önemli parçalarından biridir.
Keystore İçerisinde Hangi Bilgiler Bulunur?
Keystore oluştururken birkaç farklı bilgiyle karşılaşırsınız.
Bunların ne işe yaradığını bilmeniz daha sonra yaşayabileceğiniz karışıklıkları önler.
Key Store Path
Oluşturulacak .jks dosyasının bilgisayarınızda kaydedileceği konumdur.
Örneğin:
D:\AndroidKeys\mertboss-release.jks
Dosyayı proje klasörünün içerisinde bırakıp daha sonra projeyle beraber yanlışlıkla silmek yerine ayrı ve güvenli bir yerde saklamanız daha doğru olacaktır.
Keystore Password
Keystore dosyanızı koruyan paroladır.
Kolay tahmin edilebilecek bir parola kullanmayın ve parolanızı güvenli şekilde saklayın.
Key Alias
Keystore içerisinde bulunan anahtarın ismidir.
Örneğin:
mertboss
release
production
gibi bir alias belirlenebilir.
Alias değerini de daha sonra uygulamayı imzalarken kullanacağınız için kaybetmemeniz gerekir.
Key Password
Keystore içerisindeki ilgili private key için kullanılan paroladır.
Android Studio üzerinden oluşturma işlemi sırasında bu bilgi de sizden istenir.
Validity
Oluşturulan anahtarın ne kadar süre geçerli olacağını belirtir.
Android'in resmi dokümantasyonu, anahtarın uygulamanın beklenen kullanım ömrü boyunca güncellemeleri imzalayabilecek kadar uzun süre geçerli tutulmasını ve Android Studio ile oluştururken en az 25 yıllık geçerlilik verilmesini öneriyor.
Android Studio ile Keystore Nasıl Oluşturulur?
Android Studio kullanıyorsanız keystore oluşturmak için ekstra bir programa ihtiyacınız bulunmaz.
Projenizi açtıktan sonra:
Build → Generate Signed Bundle / APK
bölümüne girin.
Buradan oluşturmak istediğiniz pakete göre:
Android App Bundle
veya
APK
seçeneğini seçebilirsiniz.
Sonraki ekranda Key store path bölümünün altında bulunan Create new seçeneğine tıklayın.
Karşınıza yeni keystore oluşturma ekranı gelecektir. Android Studio'nun güncel resmi yönergesinde de süreç bu şekilde ilerlemektedir.
Burada sizden temel olarak:
Key Store Path
Password
Alias
Key Password
Validity
Certificate bilgileri
istenir.
Bilgileri doldurduktan sonra işlemi tamamladığınızda .jks uzantılı keystore dosyanız oluşturulacaktır.
APK veya AAB Nasıl İmzalanır?
Keystore dosyanız hazırsa tekrar:
Build → Generate Signed Bundle / APK
bölümüne girin.
APK oluşturacaksanız:
APK
Google Play için AAB oluşturacaksanız:
Android App Bundle
seçebilirsiniz.
Ardından daha önce oluşturduğunuz keystore dosyasının konumunu gösterin ve ilgili bilgileri girin.
Örneğin:
Key store path: mertboss-release.jks
Key alias: mertboss
Key store password: ••••••••
Key password: ••••••••
Bilgiler doğruysa Android Studio ilgili anahtarı kullanarak release paketinizi imzalayabilir.
Debug ve Release İmzalama Arasındaki Fark
Burada en çok karıştırılan noktalardan biri budur.
Android Studio geliştirme sırasında uygulamanızı çalıştırdığınızda genellikle otomatik oluşturulan bir debug keystore kullanır.
Yani her test yaptığınızda manuel olarak keystore oluşturmanız gerekmez.
Ancak debug anahtarı geliştirme içindir. Google'ın dokümantasyonuna göre çoğu uygulama mağazası debug sertifikasıyla imzalanmış uygulamaları yayın için kabul etmez.
Gerçek kullanıcıya dağıtılacak sürüm için release imzalama kullanılmalıdır.
Kısaca:
Debug → Geliştirme ve test
Release → Gerçek yayın
olarak düşünebilirsiniz.
App Signing Key ve Upload Key Aynı Şey mi?
Google Play tarafında işler biraz daha farklıdır.
Özellikle Play App Signing kullanıldığında iki kavramı birbirinden ayırmak gerekir:
App Signing Key
Son kullanıcının cihazına dağıtılan APK'ların imzalanmasında kullanılan asıl uygulama imzalama anahtarıdır.
Play App Signing kullanıldığında bu anahtarı Google yönetir ve korur.
Upload Key
Google Play'e göndereceğiniz AAB veya APK paketini yükleme öncesinde imzalamak için kullandığınız anahtardır.
Google Play bu anahtarın sertifikası üzerinden yüklemenin doğruluğunu kontrol eder; dağıtılacak APK'ları ise app signing key ile imzalar.
Dolayısıyla:
Upload Key ≠ App Signing Key
olabilir.
Hatta Google, güvenlik açısından bunların ayrı anahtarlar olmasını tavsiye etmektedir.
Play App Signing Nedir?
Play App Signing kullanıldığında uygulamanın asıl imzalama anahtarının korunması Google Play tarafından gerçekleştirilir.
Siz uygulamanızın yeni sürümünü upload key ile imzalayıp Play Console'a gönderirsiniz.
Google Play ise dağıtılacak APK'ları uygulamanın app signing key anahtarıyla imzalar.
Bunun önemli avantajlarından biri upload key'in kaybolması veya ele geçirilmesi durumunda Play Console üzerinden upload key sıfırlama talebinde bulunulabilmesidir.
Bu yüzden kendi yönettiğiniz eski tip imzalama yapısıyla Play App Signing kullanılan bir uygulamanın anahtar süreçleri birbirine karıştırılmamalıdır.
SHA-1 ve SHA-256 Nedir?
Android uygulama geliştirirken zaman zaman sizden:
SHA-1
veya
SHA-256
istenebilir.
Bunlar sertifikanızın parmak izleridir.
Özellikle bazı API ve üçüncü taraf servisleri uygulamanızı tanımlamak için paket adıyla beraber sertifika parmak izini isteyebilir.
Play Console tarafında upload ve app signing sertifikalarının SHA-1 ve SHA-256 parmak izleri görüntülenebilir.
Burada önemli bir ayrıntı vardır:
Debug SHA-1 ile Release SHA-1 aynı olmak zorunda değildir.
Bu nedenle uygulamanız Android Studio üzerinden test ederken bir servisle düzgün çalışıyor fakat release APK/AAB sonrasında çalışmıyorsa kontrol edilmesi gereken noktalardan biri sertifika yapılandırmasıdır.
Keystore Dosyamı Kaybedersem Ne Olur?
Bu sorunun cevabı kullandığınız imzalama sistemine göre değişebilir.
Play App Signing kullanıyorsanız upload key kaybolduğunda veya güvenliği ihlal edildiğinde yeni bir upload key için sıfırlama süreci bulunmaktadır. Çünkü uygulamanın asıl signing key'i Google tarafından korunmaktadır.
Fakat kendi app signing key'inizi tamamen kendiniz yönetiyorsanız durum çok daha ciddi olabilir.
Bu nedenle:
"Bilgisayarımda duruyor, bir şey olmaz."
mantığıyla hareket etmeyin.
Bilgisayar bozulabilir.
Disk arızalanabilir.
Dosyalar yanlışlıkla silinebilir.
Format atılabilir.
Proje klasörü kaybolabilir.
Bu yüzden yayın öncesinde anahtar yönetimi ve yedekleme planınızı oluşturun.
Keystore Nasıl Yedeklenmeli?
En azından aşağıdaki bilgileri güvenli şekilde saklamanızı tavsiye ediyoruz:
- .jks / .keystore dosyanız
- Keystore parolanız
- Key alias bilginiz
- Key parolanız
- Hangi uygulamaya ait olduğu
- İlgili package name bilgisi
Ancak bütün bunları tek bir .txt dosyasına yazıp keystore ile aynı klasörde tutmak iyi bir güvenlik yaklaşımı değildir.
Özellikle production uygulamalarda private key ve parolaların erişimini sınırlandırın.
Keystore dosyanızı:
GitHub'a yüklemeyin.
Forumda paylaşmayın.
Discord üzerinden göndermeyin.
Projenin herkese açık kaynak kodunun içerisinde bırakmayın.
Keystore private key içerebildiğinden gizli tutulmalıdır. Buna karşılık public certificate gerektiğinde paylaşılabilir.
Keystore GitHub'a Yüklenir mi?
Production keystore dosyanızı public repository içerisine koymamanız gerekir.
Aynı şekilde gerçek şifrelerinizi doğrudan:
build.gradle
gradle.properties
veya kaynak kod içerisinde açık şekilde bırakmak da güvenlik açısından doğru değildir.
Özellikle ekip halinde geliştirilen projelerde imzalama bilgilerinin kimler tarafından erişilebilir olduğunu kontrol edin.
Bir private repository kullanmanız da bütün sırları gelişigüzel repository içerisinde tutmanız gerektiği anlamına gelmez.
Mevcut Uygulamayı Güncellerken İmzalama
Daha önce yayınladığınız bir uygulamanın yeni sürümünü hazırlarken en çok dikkat edilmesi gereken bölümlerden biri budur.
Android'in güvenli güncelleme modelinde uygulama imzası kritik rol oynar. Google'ın Android dokümantasyonunda da app signing key'in uygulamanın yaşam döngüsü boyunca kullanılan temel kimlik unsurlarından biri olduğu belirtilmektedir.
Bu yüzden yeni sürüm hazırlarken:
"Yeni keystore oluşturayım, bununla güncellerim."
şeklinde hareket etmeyin.
Önce mevcut uygulamanızın nasıl imzalandığını ve Play App Signing yapılandırmasını kontrol edin.
Özellikle başka bir geliştiriciden devralınmış projelerde bu kontrol yapılmadan yeni release hazırlanmamalıdır.
Keystore Var Ama Şifresini Unuttum, Ne Yapmalıyım?
Keystore dosyasının bilgisayarınızda bulunması tek başına yeterli değildir.
İmzalama sırasında gerekli parola ve alias bilgilerinin de doğru olması gerekir.
Bu nedenle keystore oluşturduğunuz anda bilgileri güvenli bir parola yöneticisi veya kurumunuzun kullandığı güvenli kimlik bilgisi yönetim sistemine kaydetmeniz iyi bir yöntemdir.
Sorun yaşandıktan sonra kurtarmaya çalışmak yerine en başta düzgün bir yedekleme yapmak çok daha sağlıklıdır.
Yeni Uygulamalarda Her Uygulama İçin Ayrı Keystore Gerekir mi?
Teknik olarak bir keystore içerisinde birden fazla key bulunabilir ve aynı anahtarın farklı uygulamalarda kullanıldığı yapılar da vardır.
Ancak burada önemli olan anahtar yönetimi stratejisidir.
Bir anahtarın birçok uygulamada kullanılması durumunda o anahtarın güvenliğiyle ilgili yaşanacak bir problem birden fazla projeyi etkileyebilir.
Bu nedenle özellikle müşteri projelerinde hangi uygulamanın hangi anahtarla imzalandığını düzenli şekilde kayıt altında tutmanız faydalıdır.
Sık Karşılaşılan Keystore ve İmzalama Hataları
Keystore password was incorrect
Girilen keystore parolası yanlıştır.
Doğru keystore dosyasını seçtiğinizden ve parolanın doğru olduğundan emin olun.
Alias bulunamıyor
Seçtiğiniz keystore içerisinde girdiğiniz alias mevcut olmayabilir.
Doğru alias bilgisini kontrol edin.
APK telefondaki mevcut uygulamanın üzerine kurulmuyor
Paket adı veya imzalama sertifikası farklı olabilir.
Özellikle aynı uygulamanın debug ve release sürümleri arasında geçiş yaparken bu durumla karşılaşabilirsiniz.
Google Play yeni AAB dosyasını kabul etmiyor
Yanlış upload key ile imzalama, yanlış package name veya sürüm yapılandırması gibi nedenler kontrol edilmelidir.
Play Console'un verdiği hata mesajını okumadan yeni keystore oluşturarak tekrar tekrar deneme yapmak problemi daha karmaşık hale getirebilir.
SHA-1 doğru olmasına rağmen servis çalışmıyor
Play App Signing kullanıyorsanız yalnızca yerel keystore sertifikanızı değil, Play Console'daki app signing certificate değerlerini de kontrol edin.
Keystore Oluştururken Yapılmaması Gerekenler
Son olarak birkaç önemli noktayı toparlayalım.
1. Keystore dosyanıza test123 gibi basit parolalar vermeyin.
2. Production keystore dosyanızı herkese açık alanlara yüklemeyin.
3. Keystore'un yalnızca tek kopyasını bilgisayarınızda bırakmayın.
4. Hangi keystore'un hangi uygulamaya ait olduğunu unutmayın.
5. Mevcut bir uygulamaya güncelleme göndermeden önce imzalama yapılandırmasını kontrol edin.
6. Debug keystore ile production keystore'u birbirine karıştırmayın.
7. Keystore parolalarını kaynak kod içerisine gelişigüzel yazmayın.
8. Başka bir geliştiriciye proje devrediyorsanız imzalama sürecinin nasıl yönetildiğini de açıkça belirtin.
Kısaca Özetleyelim
Keystore, Android uygulamanızın imzalama anahtarlarını ve sertifikalarını saklayan önemli bir dosyadır. Android uygulamalarında imzalama hem ilk yayın hem de sonraki güncellemeler açısından kritik öneme sahiptir.
İlk defa uygulama yayınlayacaksanız keystore oluşturup geçmek yerine keystore, upload key, app signing key ve Play App Signing arasındaki farkı anlamanızı tavsiye ediyoruz.
En önemlisi de oluşturduğunuz anahtarların güvenliğini ve yedeklerini uygulamanız yayınlandıktan sonra düşünmeye başlamayın.
Uygulamayı yayınlamadan önce bu işlemleri tamamlayın.
Keystore veya imzalama sırasında bir sorunla karşılaşırsanız forumda yeni konu oluştururken Android Studio sürümünüzü, APK mı AAB mi hazırladığınızı ve aldığınız hata mesajını paylaşabilirsiniz.
Private key, keystore parolası veya diğer gizli bilgilerinizi konu içerisine kesinlikle eklemeyin.
Herkese iyi geliştirmeler.
Teknik referans olarak Android'in resmi uygulama imzalama dokümantasyonuna da bakabilirsiniz.