Uygulama İmzalama
Anahtarlar ve Play App Signing.
Uygulama İmzalama, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Uygulamalar Neden İmzalanmalıdır
Android, dijital olarak imzalanmamış bir uygulamayı yüklemez. İmza iki şeyi kanıtlar: uygulamayı kimin yayımladığı ve APK'nin o zamandan beri değiştirilmediği.
En önemlisi, imzalar güncellemeleri özgün uygulamaya bağlar. Bir güncelleme yalnızca yüklü sürümle aynı anahtarla imzalanmışsa kabul edilir. Bu anahtarı kaybederseniz uygulamanızı bir daha güncelleyemezsiniz.
Bu derste keystore'ları, imzalama yapılandırmasını ve Google'ın daha güvenli modern yaklaşımı olan Play App Signing'i ele alacağız.
Keystore'lar ve Anahtarlar
İmzalama kimliğiniz bir keystore dosyasında (.jks veya .keystore) bulunur. Bir keystore birden fazla anahtar barındırabilir; her anahtarın bir takma adı ve kendine ait parolası vardır.
- Keystore parolası — dosyanın kilidini açar.
- Anahtar takma adı — içindeki anahtarı adlandırır.
- Anahtar parolası — belirli bir anahtarın kilidini açar.
Her gün çalıştırdığınız hata ayıklama derlemeleri, geçici bir hata ayıklama keystore'u ile otomatik olarak imzalanır. Sürüm için kendi keystore'unuza ihtiyacınız vardır.
Keystore Oluşturma
Android Studio iletişim kutusundan veya JDK ile birlikte gelen keytool komutuyla bir keystore oluşturabilirsiniz.
Uzun bir geçerlilik süresi kullanın (25 yıl veya daha fazla); anahtarın süresi dolarsa güncelleme yayımlayamazsınız. RSA 2048 standart seçenektir.
keytool -genkeypair \
-v \
-keystore release.jks \
-alias upload \
-keyalg RSA \
-keysize 2048 \
-validity 10000signingConfigs Bloğu
Gradle derlemesi sırasında otomatik olarak imzalamak için bir signingConfigs girdisi tanımlayın ve bunu release derleme türüne bağlayın.
Bu yöntem çalışır, ancak parolaların doğrudan derleme dosyasında bulunduğuna dikkat edin; bunu bir sonraki bölümde düzelteceğiz.
android {
signingConfigs {
create("release") {
storeFile = file("release.jks")
storePassword = "superSecret"
keyAlias = "upload"
keyPassword = "superSecret"
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
}
}
}Gizli Bilgileri Git'ten Uzak Tutma
Parolaları veya keystore'u hiçbir zaman sürüm denetimine göndermeyin. Bunları bunun yerine yerel ve Git tarafından yok sayılan bir keystore.properties dosyasından okuyun.
keystore.properties ve *.jks öğelerini .gitignore dosyasına ekleyin.
// top of app/build.gradle.kts
val keystoreProps = Properties().apply {
val f = rootProject.file("keystore.properties")
if (f.exists()) load(f.inputStream())
}
android {
signingConfigs {
create("release") {
storeFile = file(keystoreProps["storeFile"] as String)
storePassword = keystoreProps["storePassword"] as String
keyAlias = keystoreProps["keyAlias"] as String
keyPassword = keystoreProps["keyPassword"] as String
}
}
}keystore.properties Dosyası
Karşılık gelen properties dosyası, Git dışında tutulan ve güvenli bir yerde (parola yöneticisi veya CI gizli bilgi deposu) saklanan, düz bir anahtar=değer listesidir.
Bir CI sunucusunda bunları sürüm denetimine alınmış bir dosya yerine ortam değişkenleriyle sağlanan gizli bilgiler olarak ekleyebilirsiniz.
# keystore.properties (git-ignored!)
storeFile=release.jks
storePassword=superSecret
keyAlias=upload
keyPassword=superSecretPlay App Signing
Modern Play, Play App Signing kullanır. Bu yöntemde Google, gerçek uygulama imzalama anahtarını güvenli altyapısında tutar ve kullanıcılara gönderilen APK'leri imzalamak için kullanır.
Siz yalnızca bir yükleme anahtarını yönetirsiniz: paketinizle bu anahtarı kullanarak imzalar ve yükleme yaparsınız. Play, yükleme anahtarınızı doğrular, onu kaldırır ve uygulama imzalama anahtarıyla yeniden imzalar.
En büyük avantaj şudur: yükleme anahtarınızı kaybederseniz sıfırlama isteğinde bulunabilirsiniz; kullanıcıların güvendiği uygulama imzalama anahtarı ise Google'da güvende kalır.
Yükleme Anahtarı ve Uygulama İmzalama Anahtarı
İki anahtarın iki farklı görevi vardır; bunları karıştırmayın:
- Yükleme anahtarı — size aittir. Yüklediğiniz AAB'yi imzalar. Kaybedilirse sıfırlanabilir.
- Uygulama imzalama anahtarı — Google'a aittir (veya bir kez yüklediğiniz anahtardır). Kullanıcıların yüklediği son APK'leri imzalar. Kalıcıdır.
Yeni bir uygulamayı kaydederken en kolay yol, uygulama imzalama anahtarını Google'ın oluşturmasına izin vermek ve yüklemeleri yükleme anahtarınızla imzalamaktır.
İmzayı Doğrulama
Bir yapının nasıl imzalandığını doğrulamak için Android SDK build-tools içindeki apksigner aracını kullanın. Bu araç imzalama sertifikasını ve hangi imza şemalarının (v1/v2/v3) mevcut olduğunu bildirir.
Sertifikanın SHA-256 parmak izini karşılaştırmak, uygulamanızı Firebase veya Google Sign-In gibi hizmetlere kaydetmenin de yoludur.
# Verify and print signer certificates of an APK
apksigner verify --print-certs app-release.apk
# Show the SHA-256 fingerprint of a keystore key
keytool -list -v -keystore release.jks -alias uploadAnahtarlarınızı Koruma
Yükleme anahtarınızı değiştirmek zordur; kendi yönettiğiniz uygulama imzalama anahtarının ise alternatifi yoktur. Onlara en değerli varlıklarınız gibi davranın:
- Keystore'un yedeğini en az iki güvenli konumda tutun.
- Parolaları kaynak koduna asla koymayın; bir parola yöneticisinde saklayın.
- Kaybedilen yükleme anahtarının kurtarılabilmesi için Play App Signing kullanın.
- Ekipte keystore'a erişebilecek kişileri sınırlandırın.
Birçok yayımlanmış uygulama, geliştiricisi anahtarı kaybettiği ve artık güncelleme yayımlayamadığı için terk edilmiştir.
Hepsini Bir Araya Getirme
Sürüm imzalama işleminin tamamı şöyledir:
keytoolile bir yükleme keystore'u oluşturun.- Gizli bilgileri
keystore.propertiesdosyasından okuyarak bunusigningConfigsiçine bağlayın. ./gradlew bundleReleaseile imzalı bir.aabderleyin.- Play'e yükleyin; Play, kullanıcılara göndermeden önce paketi uygulama imzalama anahtarıyla yeniden imzalar.
Bundan sonra her güncelleme aynı yükleme anahtarıyla imzalanmalıdır.
Hızlı Kontrol
Play App Signing etkinleştirildiğinde yüklediğiniz paketi imzalamak için siz hangi anahtarı kullanırsınız ve bu anahtarı kaybederseniz ne olur?
Özet: Uygulama İmzalama
Bir Android uygulamasını yüklenebilir ve güncellenebilir yapan şey imzalamadır:
- Bir keystore anahtarları barındırır; her anahtarın bir takma adı ve parolaları vardır.
keytoolile uzun geçerlilik süreli bir anahtar oluşturun ve bunusigningConfigsiçine bağlayın.- Parolaları
keystore.propertiesve.gitignorearacılığıyla Git'ten uzak tutun. - Play App Signing, anahtarları sıfırlanabilir yükleme anahtarınıza ve Google'ın kalıcı uygulama imzalama anahtarına ayırır.
- Anahtarları dikkatle yedekleyin; kaybedilen bir anahtar uygulamanın ömrünü sona erdirebilir.
Sıradaki konu: Play Console'u ve mağaza sayfanızı kurma.
Sıkça Sorulan Sorular
“Uygulama İmzalama” dersi ücretsiz mi?
Evet — “Uygulama İmzalama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“Uygulama İmzalama” dersinde ne öğreneceğim?
Anahtarlar ve Play App Signing. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Uygulama İmzalama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.