Android, tüm APK'ların bir cihaza yüklenmeden veya güncellenmeden önce bir sertifikayla dijital olarak imzalanmasını gerektirir. Uygulama paketinizi Android Uygulama Paketleri kullanarak yayınlarken, Play Console'a yüklemeden önce uygulama paketinizi bir yükleme anahtarıyla imzalamanız gerekir. Play Uygulama İmzalama, gerisini halleder. Play Store'da veya diğer mağazalarda APK'lar kullanılarak dağıtılan uygulamalarda, yüklemek üzere APK'larınızı manuel olarak imzalamanız gerekir.
Bu sayfada, uygulama imzalama ve güvenlikle ilgili bazı önemli kavramlar, Android Studio'yu kullanarak uygulamanızı Google Play'de yayınlamak üzere imzalama ve Play Uygulama İmzalama'yı yapılandırma ile ilgili bilgiler verilmektedir.
Aşağıda, yeni bir uygulamayı imzalayıp Google Play'de yayınlamak için uygulamanız gerekebilecek adımlara üst düzey bir genel bakış verilmiştir:
- Yükleme anahtarı ve anahtar deposu oluşturma
- Yükleme anahtarınızla uygulamanızı imzalama
- Play Uygulama İmzalama'yı yapılandırma
- Uygulamanızı Google Play'e yükleme
- Uygulamanızın sürümünü hazırlayıp kullanıma sunma
Bunun yerine uygulamanız mevcut bir uygulama imzalama anahtarıyla Google Play Store'da zaten yayınlandıysa veya yeni bir uygulama için uygulama imzalama anahtarını Google'ın oluşturmasını sağlamak yerine seçmek isterseniz aşağıdaki adımları uygulayın:
- Uygulamanızın imzalama anahtarıyla uygulamanızı imzalayın.
- Play Uygulama İmzalama'ya uygulamanızın imzalama anahtarını yükleyin.
- (Önerilen) Uygulamanızda gelecekte yapılacak güncellemeler için bir yükleme sertifikası oluşturun ve kaydedin
- Uygulamanızı Google Play'e yükleme
- Uygulamanızın sürümünü hazırlayıp kullanıma sunma
Bu sayfada, uygulamanızı diğer uygulama mağazalarına yüklerken kullanmak için kendi anahtarlarınızı nasıl yöneteceğiniz de açıklanmaktadır. Android Studio kullanmıyorsanız veya uygulamanızı komut satırından imzalamayı tercih ediyorsanız
apksigner'i nasıl kullanacağınızı öğrenin.
Play Uygulama İmzalama
Play Uygulama İmzalama özelliğini kullandığınızda Google, uygulamanızın imzalama anahtarını sizin için yönetir ve korur, ayrıca imzalama anahtarını kullanarak APK'larınızı dağıtım için imzalar. Ayrıca, uygulama paketleri, APK'ların oluşturulmasını ve imzalanmasını Google Play Store'a ertelediğinden, uygulama paketinizi yüklemeden önce Play Uygulama İmzalama'yı yapılandırmanız gerekir. Bunu yaparak aşağıdakilerden yararlanabilirsiniz:
- Android App Bundle'ı kullanarak Google Play'in gelişmiş iletim modlarını destekleyin. Android App Bundle, uygulamanızı çok daha küçük hale getirir, sürümlerinizi basitleştirir, özellik modüllerini kullanmanızı ve hazır deneyimler sunmanızı sağlar.
- İmzalama anahtarınızın güvenliğini artırın ve Google Play'e yüklediğiniz uygulama paketini imzalamak için ayrı bir yükleme anahtarı kullanmaya olanak tanıyın.
Anahtarın yeni sürüme geçirilmesi, mevcut anahtarınızın güvenliği ihlal edilirse veya şifreleme olarak daha güçlü bir anahtara geçmeniz gerekirse uygulama imzalama anahtarınızı değiştirebilmenizi sağlar.
Play Uygulama İmzalama iki anahtar kullanır: uygulama imzalama anahtarı ve yükleme anahtarı. Bu anahtarlar, Anahtarlar ve anahtar depoları hakkındaki bölümde daha ayrıntılı olarak açıklanmıştır. Yükleme anahtarını saklar ve uygulamanızı Google Play Store'a yüklemek üzere İmzalamak için kullanırsınız. Google, kimliğinizi doğrulamak için yükleme sertifikasını kullanır ve dağıtım için Şekil 1'de gösterildiği gibi APK'larınızı uygulama imzalama anahtarınızla imzalar. Ayrı bir yükleme anahtarı kullanarak, anahtarınızın kaybolması veya güvenliğinin ihlal edilmesi durumunda yükleme anahtarı sıfırlama isteğinde bulunabilirsiniz.
Buna karşılık, Play Uygulama İmzalama'yı etkinleştirmemiş uygulamalarda, uygulamanızın imzalama anahtarını kaybederseniz uygulamanızı güncelleme imkanını kaybetmiş olursunuz.
Anahtarlarınız, Google'ın kendi anahtarlarını depolamak için kullandığı altyapıda saklanır ve burada Google'ın Anahtar Yönetim Hizmeti tarafından korunur. Google Cloud Güvenlik Raporları'nı okuyarak Google’ın teknik altyapısı hakkında daha fazla bilgi edinebilirsiniz.
Play Uygulama İmzalama'yı kullanırken yükleme anahtarınızı kaybederseniz veya anahtarın güvenliği ihlal edilirse Play Console'dan yükleme anahtarının sıfırlanmasını isteyebilirsiniz. Uygulama imzalama anahtarınız Google tarafından korunduğundan, yükleme anahtarlarını değiştirseniz bile uygulamanızın yeni sürümlerini orijinal uygulamaya güncelleme olarak yüklemeye devam edebilirsiniz. Daha fazla bilgi edinmek için Kayıp veya güvenliği ihlal edilmiş özel yükleme anahtarını sıfırlama bölümünü okuyun.
Sonraki bölümde uygulama imzalama ve güvenlik ile ilgili bazı önemli terimler ve kavramlar açıklanmaktadır. Bu adımı atlayıp uygulamanızı Google Play Store'a yüklenmek üzere nasıl hazırlayacağınızı öğrenmek isterseniz Uygulamanızı yayınlanmak için imzalama bölümüne gidin.
Anahtar depoları, anahtarlar ve sertifikalar
Java Anahtar Depoları (.jks veya .keystore), sertifika ve özel anahtar deposu olarak hizmet veren ikili dosyalardır.
Dijital sertifika veya kimlik sertifikası olarak da bilinen ortak anahtar sertifikası (
.der veya
.pem dosyaları), ortak/özel anahtar çiftinin ortak anahtarını ve ilgili özel anahtarın sahibini tanımlayan diğer meta verileri (ör. ad ve konum) içerir.
Anlamanız gereken farklı anahtar türleri şunlardır:
- Uygulama imzalama anahtarı: Bir kullanıcının cihazına yüklenen APK'ları imzalamak için kullanılan anahtar. Android’in güvenli güncelleme modeli kapsamında, imzalama anahtarı, uygulamanızın kullanım ömrü boyunca asla değişmez. Uygulama imzalama anahtarı gizlidir ve gizli tutulmalıdır. Ancak isterseniz uygulama imzalama anahtarınız kullanılarak oluşturulan sertifikayı paylaşabilirsiniz.
Yükleme anahtarı: Uygulama paketini veya APK'yı Google Play ile uygulama imzalama için yüklemeden önce imzalamak için kullandığınız anahtardır. Yükleme anahtarını gizli tutmanız gerekir. Ancak yükleme anahtarınız kullanılarak oluşturulan sertifikayı paylaşabilirsiniz. Yükleme anahtarını aşağıdaki yöntemlerden birini kullanarak oluşturabilirsiniz:
- Kaydolduğunuzda Google'ın uygulama imzalama anahtarını sizin için oluşturmasını seçerseniz uygulamanızı yayınlanmak üzere imzalamak için kullandığınız anahtar, yükleme anahtarınız olarak belirlenir.
- Yeni veya mevcut uygulamanızı kaydederken Google'a uygulama imzalama anahtarını sağlarsanız, daha fazla güvenlik için kayıt sırasında veya sonrasında yeni bir yükleme anahtarı oluşturabilirsiniz.
- Yeni bir yükleme anahtarı oluşturmazsanız her sürümü imzalamak için yükleme anahtarınız olarak uygulama imzalama anahtarınızı kullanmaya devam edersiniz.
İpucu: Anahtarlarınızı güvende tutmak için uygulama imzalama anahtarınızla yükleme anahtarınızın farklı olduğundan emin olmanız önerilir.
API sağlayıcılarla çalışma
Uygulama imzalama anahtarının ve yükleme anahtarınızın sertifikasını Play Console'daki Sürüm > Kurulum > Uygulama imzalama sayfasından indirebilirsiniz. Bu özellik, ortak anahtarları API sağlayıcılara kaydetmek için kullanılır. Özel anahtarınızı içermediğinden paylaşılması amaçlanmıştır.
Sertifika parmak izi, API sağlayıcıların hizmetlerini kullanmak isteyen bir uygulamayı kaydetmek için genellikle paket adıyla birlikte talep ettiği sertifikanın kısa ve benzersiz bir temsilidir. Yükleme ve uygulama imzalama sertifikalarının MD5, SHA-1 ve SHA-256 parmak izlerini Play Console'un uygulama imzalama sayfasında bulabilirsiniz. Aynı sayfadan orijinal sertifikayı (
.der) indirerek de diğer parmak izlerini hesaplayabilirsiniz.
Hata ayıklama derlemenizi imzalayın
Android Studio, projenizi IDE'den çalıştırırken veya hata ayıklarken uygulamanızı Android SDK araçları tarafından oluşturulan bir hata ayıklama sertifikasıyla otomatik olarak imzalar. Android Studio'da projenizi ilk kez çalıştırdığınızda veya projenizde hata ayıkladığınızda, IDE otomatik olarak
$HOME/.android/debug.keystore ürününde hata ayıklama anahtar deposunu ve sertifikayı oluşturur ve anahtar deposu ile anahtar şifrelerini ayarlar.
Hata ayıklama sertifikası, derleme araçları tarafından oluşturulduğundan ve tasarım gereği güvenli olmadığından, çoğu uygulama mağazası (Google Play Store dahil) hata ayıklama sertifikasıyla imzalanmış uygulamaları yayınlama işlemi için kabul etmez.
Android Studio, hata ayıklama imzalama bilgilerinizi otomatik olarak bir imzalama yapılandırmasında saklar. Böylece her hata ayıklama işleminde bu bilgileri girmeniz gerekmez. İmzalama yapılandırması; anahtar deposu konumu, anahtar deposu şifresi, anahtar adı ve anahtar şifresi dahil olmak üzere uygulamanızı imzalamak için gerekli tüm bilgileri içeren bir nesnedir.
Hata ayıklama amacıyla uygulama derleme ve çalıştırma hakkında daha fazla bilgi için Uygulamanızı Derleme ve Çalıştırma bölümüne bakın.
Hata ayıklama sertifikasının süresi doldu
Hata ayıklama amacıyla uygulamanızı imzalamak için kullanılan kendinden imzalı sertifikanın son kullanma tarihi, oluşturulma tarihinden itibaren 30 yıldır. Sertifikanın süresi dolduğunda bir yapı hatası alırsınız.
Bu sorunu düzeltmek için aşağıdaki konumlardan birinde depolanan
debug.keystore dosyasını silmeniz yeterlidir:
- OS X ve Linux'ta
~/.android/
- Windows XP'de
C:\Documents and Settings\user\.android\
- Windows Vista ve Windows 7, 8 ve 10'da
C:\Users\user\.android\
Uygulamanızın hata ayıklama sürümünü derleyip tekrar çalıştırdığınızda, Android Studio yeni bir anahtar deposunu ve hata ayıklama anahtarını yeniden oluşturur.
Uygulamanızı Google Play'de yayınlanması için imzalayın
Uygulamanızı yayınlamaya hazır olduğunuzda, uygulamanızı imzalamanız ve Google Play gibi bir uygulama mağazasına yüklemeniz gerekir. Uygulamanızı Google Play'de ilk kez yayınlarken Play Uygulama İmzalama'yı da yapılandırmanız gerekir. Play Uygulama İmzalama, Ağustos 2021'den önce oluşturulan uygulamalar için isteğe bağlıdır. Bu bölümde, uygulamanızı yayınlanmak için doğru şekilde nasıl imzalayacağınız ve Play Uygulama İmzalama'yı nasıl yapılandıracağınız gösterilmektedir.
Yükleme anahtarı ve anahtar deposu oluşturma
Yükleme anahtarınız yoksa (Play Uygulama İmzalama'yı yapılandırırken kullanışlıdır) Android Studio'yu kullanarak aşağıdaki şekilde bir yükleme anahtarı oluşturabilirsiniz:
- Menü çubuğunda, Oluştur > İmzalanmış Paket/APK Oluştur'u tıklayın.
- İmzalanmış Paket veya APK Oluştur iletişim kutusunda Android App Bundle veya APK'yı seçip Sonraki'yi tıklayın.
- Anahtar deposu yolu alanının altında Yeni oluştur'u tıklayın.
Yeni Anahtar Deposu penceresinde anahtar deponuz ve anahtarınız için aşağıdaki bilgileri Şekil 2'de gösterildiği gibi sağlayın.
Anahtar deposu
- Anahtar deposu yolu: Anahtar deponuzun oluşturulması gereken konumu seçin.
Ayrıca, konum yolunun sonuna
.jksuzantısıyla bir dosya adı eklenmelidir.
- Şifre: Anahtar deponuz için güvenli bir şifre oluşturup onaylayın.
- Anahtar deposu yolu: Anahtar deponuzun oluşturulması gereken konumu seçin. Ayrıca, konum yolunun sonuna
Anahtar
- Takma ad: Anahtarınız için tanımlayıcı bir ad girin.
- Şifre: Anahtarınız için güvenli bir şifre oluşturup onaylayın. Bu, anahtar deposu şifrenizle aynı olmalıdır. (Daha fazla bilgi için lütfen bilinen sorun konusuna bakın)
- Geçerlilik (yıl): Anahtarınızın geçerli olacağı süreyi yıl olarak ayarlayın. Anahtarınızın en az 25 yıl boyunca geçerli olması gerekir. Bu sayede, uygulamanızın kullanım süresi boyunca uygulama güncellemelerini aynı anahtarla imzalayabilirsiniz.
- Sertifika: Sertifikanız için kendinizle ilgili bazı bilgileri girin. Bu bilgiler uygulamanızda gösterilmez, ancak sertifikanıza APK'nın bir parçası olarak eklenir.
Formu doldurduktan sonra Tamam'ı tıklayın.
Uygulamanızı yükleme anahtarınızla oluşturmak ve imzalamak isterseniz Yükleme anahtarınızla uygulamanızı imzalama hakkındaki bölüme geçin. Yalnızca anahtar ve anahtar deposu oluşturmak istiyorsanız İptal'i tıklayın.
Uygulamanızı anahtarınızla imzalayın
Zaten bir yükleme anahtarınız varsa uygulamanızı imzalamak için bu anahtarı kullanın. Bunun yerine, uygulamanız mevcut bir uygulama imzalama anahtarıyla imzalanıp Google Play Store'da yayınlandıysa uygulamanızı imzalamak için bu anahtarı kullanın. Daha sonra Google Play ile ayrı bir yükleme anahtarı oluşturup kaydedebilirsiniz.
Android Studio'yu kullanarak uygulamanızı imzalamak için aşağıdaki adımları uygulayın:
- Şu anda İmzalanmış Paket veya APK Oluştur iletişim kutusu açık değilse Oluştur > İmzalanmış Paket/APK Oluştur'u tıklayın.
- İmzalanmış Paket veya APK Oluştur iletişim kutusunda, Android App Bundle veya APK'yı seçip Sonraki'yi tıklayın.
- Açılır menüden bir modül seçin.
Anahtar deponuzun yolunu ve anahtarınızın takma adını belirtin ve her ikisi için de şifreleri girin. Yükleme anahtar deponuzu ve anahtarınızı henüz hazırlamadıysanız önce Yükleme anahtarı ve anahtar deposu oluşturun, ardından bu adımı tamamlamak için geri dönün.
İleri'yi tıklayın.
Bir sonraki pencerede (Şekil 4'te gösterilmektedir), imzalı uygulamanız için bir hedef klasör seçin, derleme türünü ve varsa ürün çeşitlerini seçin.
Bir APK oluşturup imzalıyorsanız uygulamanızın hangi İmza Sürümlerini desteklemesini istediğinizi seçmeniz gerekir. Daha fazla bilgi için uygulama imzalama şemaları
Oluştur'u tıklayın.
Android Studio, imzalı uygulamanızı oluşturmayı tamamladıktan sonra Şekil 5'te gösterildiği gibi pop-up bildirimdeki uygun seçeneği tıklayarak uygulamanızı bulabilir veya analiz edebilirsiniz.
Artık uygulamanızı Play Uygulama İmzalama'ya etkinleştirmeye ve yayınlanmak üzere yüklemeye hazırsınız. Uygulama yayınlama işleminde yeniyseniz Lansmana genel bakış bölümünü okumak isteyebilirsiniz. Aksi halde, Uygulamanızı Play Console'a yükleme hakkındaki sayfaya geçin.
Play Uygulama İmzalama'yı kullanma
Bu sayfanın önceki kısımlarında açıklandığı gibi, uygulamanızı Google Play üzerinden dağıtılmak üzere imzalamak için Play Uygulama İmzalama'yı yapılandırmak gerekir (kendinden imzalı APK'ları dağıtmaya devam edebilecek uygulamalar Ağustos 2021'den önce oluşturulan uygulamalar hariç). Uygulamanız gereken adımlar, uygulamanızın henüz Google Play'de yayınlanmamış veya Ağustos 2021'den önce imzalanıp mevcut bir uygulama imzalama anahtarı kullanılarak yayınlanmış olup olmadığına bağlı olarak farklılık gösterir.
Yeni bir uygulama yapılandır
Henüz Google Play'de yayınlanmamış bir uygulama için imzalamayı yapılandırmak üzere aşağıdaki adımları uygulayın:
- Henüz yapmadıysanız bir yükleme anahtarı oluşturun ve bu yükleme anahtarıyla uygulamanızı imzalayın.
- Play Console hesabınızda oturum açın.
- Yeni sürüm oluşturmak için sürümünüzü hazırlama ve kullanıma sunma adımlarını uygulayın.
- Bir sürüm kanalı seçtikten sonra, Uygulama imzalama bölümünün altında uygulama imzalamayı aşağıdaki gibi yapılandırın:
- Google Play'in sizin için bir uygulama imzalama anahtarı oluşturmasını ve uygulamanızı imzalamak üzere kullanmasını sağlamak için hiçbir şey yapmanız gerekmez. İlk sürümünüzü imzalamak için kullandığınız anahtar yükleme anahtarınız olur ve gelecekteki sürümleri imzalamak için kullanmanız gerekir.
- Geliştirici hesabınızdaki başka bir uygulama ile aynı anahtarı kullanmak için Uygulama imzalama anahtarını değiştir > Bu hesaptaki başka bir uygulamayla aynı anahtarı kullan'ı seçin, bir uygulama seçin ve ardından Devam'ı tıklayın.
- Google'ın uygulamanızı imzalarken kullanması için kendi imzalama anahtarınızı sağlamak üzere Uygulama imzalama anahtarını değiştir'i seçin ve özel anahtar ile genel sertifikasını güvenli bir şekilde yüklemenize olanak tanıyan Dışa aktar ve yükle seçeneklerinden birini belirleyin.
App Bundle adlı bölümde, yükleme anahtarınızı kullanarak imzaladığınız uygulamayı bulup yüklemek için Dosyalara göz at'ı tıklayın. Uygulamanızı yayınlama hakkında daha fazla bilgi için sürümünüzü hazırlama ve kullanıma sunma konusuna bakın. Play Uygulama İmzalama'yı yapılandırdıktan sonra uygulamanızı bıraktığınızda, Google Play oluşturur (mevcut bir anahtarı yüklemediğiniz sürece) ve uygulamanızın imzalama anahtarını sizin için yönetir. Uygulamanızı Google Play'e yüklemeden önce, uygulamanızda yapacağınız sonraki güncellemeleri uygulamanın yükleme anahtarını kullanarak imzalamanız yeterlidir.
Uygulamanız için yeni bir yükleme anahtarı oluşturmanız gerekiyorsa Kayıp veya güvenliği ihlal edilmiş bir özel yükleme anahtarını sıfırlama bölümüne gidin.
Mevcut bir uygulamayı kaydetme
Mevcut bir uygulama imzalama anahtarını kullanarak Google Play'de yayınlanmış olan bir uygulamayı güncelliyorsanız Play Uygulama İmzalama'yı aşağıdaki şekilde etkinleştirebilirsiniz:
- Play Console hesabınızda oturum açın ve uygulamanıza gidin.
- Soldaki menüde Sürüm > Kurulum > Uygulama imzalama'yı tıklayın.
- Varsa, Hizmet Şartları'nı inceleyin ve Kabul et'i seçin.
- Google Play'e yüklemek istediğiniz imzalama anahtarını en iyi tanımlayan seçeneklerden birini belirleyin ve gösterilen talimatları uygulayın. Örneğin, imzalama anahtarınız için Java Anahtar Deposu kullanıyorsanız Java Anahtar Deposu'ndan yeni bir uygulama imzalama anahtarı yükle'yi seçin. Ardından PEPK aracını indirip çalıştırmak ve şifrelenmiş anahtarınızla oluşturulan dosyayı yüklemek için talimatları uygulayın.
- Kaydol'u tıklayın.
Uygulamanızın imzalama ve yükleme sertifikalarının ayrıntılarını içeren bir sayfa görürsünüz. Google Play artık uygulamanızı kullanıcılara dağıtırken mevcut anahtarınızla imzalıyor. Ancak Play Uygulama İmzalama'nın en önemli avantajlarından biri, Google Play'e yüklediğiniz çalışmayı imzalamak için kullandığınız anahtarı, Google Play'in uygulamanızı kullanıcılara dağıtılmak üzere imzalamak için kullandığı anahtardan ayırabilmenizdir. Bu nedenle, ayrı bir yükleme anahtarı oluşturup kaydetmek için bir sonraki bölümde yer alan adımları uygulamayı düşünün.
Yükleme sertifikası oluşturma ve kaydetme
Yükleme anahtarıyla imzalanmamış bir uygulama yayınlarken Google Play Console, uygulamanın gelecekteki güncellemeleri için bir tane kaydetme seçeneği sunar. Bu isteğe bağlı bir adım olsa da, uygulamanızı Google Play'in uygulamanızı kullanıcılara dağıtmak için kullandığı anahtardan ayrı bir anahtarla yayınlamanız önerilir. Bu şekilde Google, imzalama anahtarınızı güvende tutar ve kaybolan veya güvenliği ihlal edilmiş bir özel yükleme anahtarını sıfırlama seçeneğiniz olur. Bu bölümde yükleme anahtarı oluşturma, buradan yükleme sertifikası oluşturma ve uygulamanızın gelecekteki güncellemeleri için söz konusu sertifikayı Google Play'e kaydetme konuları açıklanmaktadır.
Aşağıda, Play Console'da yükleme sertifikası kaydetme seçeneğini gördüğünüz durumlar açıklanmaktadır:
- İmzalama anahtarıyla imzalanmış yeni bir uygulama yayınlayıp bu uygulamayı Play Uygulama İmzalama'da etkinleştirdiğinizde:
- Play Uygulama İmzalama'ya kaydolmuş ancak imzalama anahtarı kullanılarak imzalanmış mevcut bir uygulamayı yayınlamak üzereyken.
Play Uygulama İmzalama'yı etkinleştirmiş mevcut bir uygulamaya yönelik güncelleme yayınlamıyor ve yükleme sertifikası kaydetmek istiyorsanız aşağıdaki adımları tamamlayın ve kayıp veya güvenliği ihlal edilmiş özel yükleme anahtarını sıfırlama bölümüne geçin.
Henüz yapmadıysanız bir yükleme anahtarı ve anahtar deposu oluşturun.
Yükleme anahtarınızı ve anahtar deponuzu oluşturduktan sonra, aşağıdaki komutla
keytool kullanarak yükleme anahtarınızdan bir ortak sertifika oluşturmanız gerekir:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
Yükleme sertifikanıza artık sahip olduğunuza göre, Play Console'da istendiğinde veya yükleme anahtarınızı sıfırlarken bunu Google'a kaydedin.
Uygulama imzalama anahtarınızı yeni sürüme geçirin
Bazı durumlarda, uygulamanızın imzalama anahtarını değiştirmek isteyebilirsiniz. Örneğin, şifreleme açısından daha güçlü bir anahtar istemeniz veya imzalama anahtarınızın güvenliği ihlal edilmiş olabilir. Ancak, kullanıcılar yalnızca güncelleme aynı imzalama anahtarıyla imzalandığında uygulamanızı güncelleyebildiğinden, halihazırda yayınlanmış bir uygulamanın imzalama anahtarını değiştirmek zordur.
Uygulamanızı Google Play'de yayınlarsanız yayınlanan uygulamanızın imzalama anahtarını Play Console aracılığıyla yeni sürüme geçirebilirsiniz. Yeni anahtarınız, Android 13 ve sonraki sürümlerde yüklemeleri ve uygulama güncellemelerini imzalamak için kullanılır. Eski uygulama imzalama anahtarınız ise Android'in önceki sürümlerindeki kullanıcılar için güncellemeleri imzalamak amacıyla kullanılır.
Daha fazla bilgi için Uygulama imzalama anahtarınızı yeni sürüme geçirme konusunu okuyun.
Kayıp veya güvenliği ihlal edilmiş bir özel yükleme anahtarını sıfırlama
Özel yükleme anahtarınızı kaybettiyseniz veya özel anahtarınızın güvenliği ihlal edildiyse Play Console'da yeni bir yükleme anahtarı oluşturup yükleme anahtarının sıfırlanmasını isteyebilirsiniz.
Derleme işlemini, uygulamanızı otomatik olarak imzalayacak şekilde yapılandırın
Android Studio'da, derleme işlemi sırasında bir imzalama yapılandırması oluşturup bunu sürüm derleme türünüze atayarak projenizi uygulamanızın sürüm sürümünü otomatik olarak imzalayacak şekilde yapılandırabilirsiniz. İmzalama yapılandırması; anahtar deposu konumu, anahtar deposu şifresi, anahtar takma adı ve anahtar şifresinden oluşur. Bir imzalama yapılandırması oluşturmak ve bunu Android Studio'yu kullanarak sürüm derleme türünüze atamak için aşağıdaki adımları tamamlayın:
- Proje penceresinde uygulamanızı sağ tıklayın ve Modül Ayarlarını Aç'ı tıklayın.
- Proje Yapısı penceresinde, sol paneldeki Modüller'in altında, imzalamak istediğiniz modülü tıklayın.
- İmzalama sekmesini, ardından Ekle'yi tıklayın .
-
Anahtar deposu dosyanızı seçin, bu imzalama yapılandırması için bir ad girin (birden fazla oluşturabilirsiniz). Ardından gerekli bilgileri girin.
- Derleme Türleri sekmesini tıklayın.
- Derlemeyi tıklayın.
-
Signing Config (İmzalama Yapılandırması) bölümünde, az önce oluşturduğunuz imzalama yapılandırmasını seçin.
- Tamam'ı tıklayın.
Artık Android Studio'da Derleme > Derleme Paketleri / APK'lar altından bir seçenek belirleyerek sürüm derleme türünüzü her derlediğinizde IDE, belirlediğiniz imzalama yapılandırmasını kullanarak uygulamanızı otomatik olarak imzalar. İmzalanmış APK'nızı veya uygulama paketinizi, oluşturduğunuz modülün proje dizinindeki
build/outputs/ dizininde bulabilirsiniz.
İmzalama yapılandırması oluşturduğunuzda, imzalama bilgileriniz Gradle derleme dosyalarınızda düz metne eklenir. Bir ekipte çalışıyorsanız veya kodunuzu herkese açık olarak paylaşıyorsanız imzalama bilgilerinizi derleme dosyalarından kaldırıp ayrı olarak saklayarak güvende tutmanız gerekir. İmzalama bilgilerinizi derleme dosyalarınızdan kaldırma hakkında daha fazla bilgiyi Derleme Dosyalarınızdan İmzalama Bilgilerini Kaldırma başlıklı makalede bulabilirsiniz. İmzalama bilgilerinizi güvende tutma hakkında daha fazla bilgi için aşağıdaki Anahtarınızı güvende tutma bölümüne bakın.
Her ürün çeşidini farklı şekilde imzalayın
Uygulamanız ürün çeşitleri kullanıyorsa ve her aromayı farklı şekilde imzalamak istiyorsanız ek imzalama yapılandırmaları oluşturabilir ve bunları türe göre atayabilirsiniz:
- Proje penceresinde uygulamanızı sağ tıklayın ve Modül Ayarlarını Aç'ı tıklayın.
- Proje Yapısı penceresinde, sol paneldeki Modüller'in altında, imzalamak istediğiniz modülü tıklayın.
- İmzalama sekmesini, ardından Ekle'yi tıklayın .
-
Anahtar deposu dosyanızı seçin, bu imzalama yapılandırması için bir ad girin (birden fazla oluşturabilirsiniz). Ardından gerekli bilgileri girin.
- Tüm imzalama yapılandırmalarınızı oluşturana kadar 3. ve 4. adımları gerektiği şekilde tekrarlayın.
- Aroma sekmesini tıklayın.
- Yapılandırmak istediğiniz türü tıklayın ve İmzalama Yapılandırması açılır menüsünden uygun imzalama yapılandırmasını seçin.
Diğer ürün çeşitlerini yapılandırmak için bu işlemi tekrarlayın.
- Tamam'ı tıklayın.
İmzalama ayarlarınızı Gradle yapılandırma dosyalarında da belirtebilirsiniz. Daha fazla bilgi için İmzalama Ayarlarını Yapılandırma bölümüne bakın.
İmzalama raporu çalıştırın
Uygulamanızın her varyantıyla ilgili imzalama bilgilerini almak için Android Studio'da Gradle
signingReport görevini çalıştırın:
- Gradle araç penceresini açmak için Görünüm > Araç Pencereleri > Gradle'ı seçin
- Raporu çalıştırmak için Uygulamanız > Görevler > Android > İmzalama Raporu'nu seçin
Kendi imzalama anahtarınızı yönetin
Play Uygulama İmzalama'yı etkinleştirmemeyi seçerseniz (yalnızca Ağustos 2021'den önce oluşturulan uygulamalar için) kendi uygulama imzalama anahtarınızı ve anahtar deponuzu yönetebilirsiniz. Anahtarın ve anahtar deposunun güvenliğini sağlamaktan sorumlu olduğunuzu unutmayın. Ayrıca, uygulamanız Android App Bundle, Play Feature Delivery ve Play Asset Delivery'yi destekleyemez.
Kendi anahtarınızı ve anahtar deponuzu oluşturmaya hazır olduğunuzda önce anahtar deponuz için güçlü bir şifre ve anahtar deposunda depolanan her özel anahtar için ayrı bir güçlü şifre seçtiğinizden emin olun. Anahtar deponuzu güvenli bir yerde saklamalısınız. Uygulama imzalama anahtarınıza erişimi kaybederseniz veya anahtarınızın güvenliği ihlal edilirse Google, uygulama imzalama anahtarını sizin için alamaz ve uygulamanızın yeni sürümlerini, orijinal uygulamanın güncellemesi olarak kullanıcılara yayınlayamazsınız. Daha fazla bilgi için aşağıdaki Anahtarınızı güvende tutma bölümüne bakın.
Kendi uygulama imzalama anahtarınızı ve anahtar deponuzu yönetiyorsanız APK'nızı imzalarken uygulama imzalama anahtarınızı kullanarak yerel olarak imzalarsınız ve imzalı APK'yı Şekil 12'de gösterildiği gibi dağıtılmak üzere doğrudan Google Play Store'a yüklersiniz.
Play Uygulama İmzalama'yı kullandığınızda Google, imzalama anahtarınızı güvende tutar ve uygulamalarınızın kullanım ömürleri boyunca doğru şekilde imzalanmasını ve güncellemeleri alabilmesini sağlar. Bununla birlikte, uygulama imzalama anahtarınızı kendiniz yönetmeye karar verirseniz göz önünde bulundurmanız gereken birkaç nokta vardır.
İmzalama konusunda dikkat edilmesi gereken noktalar
Uygulamanızı beklenen kullanım ömrü boyunca aynı sertifikayla imzalamanız gerekir. Bunu yapmanızın birkaç nedeni vardır:
- Uygulama yükseltme: Sistem, bir uygulamaya güncelleme yüklerken yeni sürümdeki sertifikaları mevcut sürümdekilerle karşılaştırır. Sertifikalar eşleşirse sistem güncellemeye izin verir. Yeni sürümü farklı bir sertifikayla imzalarsanız uygulamaya farklı bir paket adı atamanız gerekir. Bu durumda, kullanıcı yeni sürümü tamamen yeni bir uygulama olarak yükler.
- Uygulama modülerliği: Android, uygulamaların isterse aynı sertifikayla imzalanan APK'ların aynı işlemde çalışmasına izin verir. Böylece sistem bunları tek bir uygulama olarak görür. Bu şekilde uygulamanızı modüller halinde dağıtabilirsiniz ve kullanıcılar her bir modülü bağımsız olarak güncelleyebilir.
- İzinler aracılığıyla kod/veri paylaşımı: Android, imzaya dayalı izinleri zorunlu kılma olanağı sağlar. Böylece bir uygulama, işlevleri belirli bir sertifikayla imzalanmış başka bir uygulamaya sunabilir. Uygulamalarınız, aynı sertifikayla birden fazla APK'yı imzalayarak ve imza tabanlı izin kontrollerini kullanarak kodları ve verileri güvenli bir şekilde paylaşabilir.
Bir uygulamanın yeni sürüme geçirilmesini desteklemeyi planlıyorsanız uygulama imzalama anahtarınızın, uygulamanın beklenen ömrünü aşan bir geçerlilik süresine sahip olduğundan emin olun. 25 yıl veya daha uzun bir geçerlilik süresi önerilir. Anahtarınızın geçerlilik süresi sona erdiğinde, kullanıcılar artık uygulamanızın yeni sürümlerine sorunsuz bir şekilde geçemeyecektir.
Uygulamalarınızı Google Play'de yayınlamayı planlıyorsanız uygulamanızı imzalamak için kullandığınız anahtarın geçerlilik süresi 22 Ekim 2033'ten sonra sona ermelidir. Google Play, yeni sürümler kullanıma sunulduğunda kullanıcıların uygulamaları sorunsuz bir şekilde yükseltebilmelerini sağlamak için bu şartı zorunlu kılar.
Anahtarınızı güvende tutun
Uygulama imzalama anahtarınızı ve anahtar deponuzu kendiniz yönetmeyi ve koruma altına almayı seçerseniz (Play Uygulama İmzalama'yı etkinleştirmek yerine) uygulama imzalama anahtarınızın güvenliğini sağlamak hem sizin hem de kullanıcı için son derece önemlidir. Birinin anahtarınızı kullanmasına izin verirseniz veya anahtar deponuzu ve şifrelerinizi üçüncü tarafın bulup kullanabileceği güvenli olmayan bir yerde bırakırsanız yazma kimliğiniz ve kullanıcının güveni tehlikeye girer.
Bir üçüncü tarafın uygulama imzalama anahtarınızı bilginiz veya izniniz olmadan almayı yönetmesi gerekirse bu kişi, kötü amaçlı bir şekilde gerçek uygulamalarınızın yerine geçen veya bunları bozan uygulamaları imzalayıp dağıtabilir. Bu türden bir kişi, başka uygulamalara veya sistemin kendisine saldıran ya da kullanıcı verilerini bozan veya çalan uygulamaları kimliğiniz altında imzalayıp dağıtabilir.
Uygulamanızın gelecekteki tüm sürümlerini imzalamak için özel anahtarınız gerekir. Anahtarınızı kaybeder veya kaybederseniz mevcut uygulamanız için güncelleme yayınlayamazsınız. Önceden oluşturulmuş bir anahtarı yeniden üretemezsiniz.
Geliştirici varlığı olarak itibarınız, uygulama imzalama anahtarınızı anahtarınızın geçerliliği sona erene kadar her zaman doğru bir şekilde güvence altına almanıza bağlıdır. Anahtarınızı güvende tutmayla ilgili bazı ipuçlarını aşağıda bulabilirsiniz:
- Anahtar deposu ve anahtar için güçlü şifreler seçin.
- Özel anahtarınızı kimseye vermeyin veya kullandırtmayın ve yetkisiz kişilerin anahtar deponuzu ve anahtar şifrelerinizi öğrenmesine izin vermeyin.
- Özel anahtarınızı içeren anahtar deposu dosyasını güvenli bir yerde saklayın.
Genel olarak anahtarınızı oluştururken, kullanırken ve saklarken sağduyulu önlemler alırsanız anahtarınız güvenli kalır.
Derleme dosyalarınızdan imzalama bilgilerini kaldırma
İmzalama yapılandırması oluşturduğunuzda Android Studio, imzalama bilgilerinizi düz metin olarak modülün
build.gradle dosyalarına ekler. Bir ekiple çalışıyorsanız veya kodunuzu açık kaynaklı olarak kullanıyorsanız bu hassas bilgileri, başkalarının kolayca erişememesi için derleme dosyalarından taşımanız gerekir. Bunu yapmak için güvenli bilgileri depolamak üzere ayrı bir özellik dosyası oluşturmanız ve bu dosyaya derleme dosyalarınızda aşağıdaki gibi başvuruda bulunmanız gerekir:
- Bir imzalama yapılandırması oluşturup bir veya daha fazla derleme türüne atayın. Bu talimatlarda, yukarıdaki Uygulamanızı otomatik olarak imzalamak için derleme işlemini yapılandırma bölümünde açıklandığı gibi, sürüm derleme türünüz için tek bir imzalama yapılandırması yapılandırdığınız varsayılmaktadır.
- Projenizin kök dizininde
keystore.propertiesadlı bir dosya oluşturun. Bu dosya, imza bilgilerinizi aşağıdaki gibi içermelidir:
storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- Modülünüzün
build.gradledosyasına,
keystore.propertiesdosyanızı
android {}blokundan önce yüklemek için kod ekleyin.
Modern
... // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { ... }
Kotlin
... import java.util.Properties import java.io.FileInputStream // Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. val keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. val keystoreProperties = Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(FileInputStream(keystorePropertiesFile)) android { ... }
Not:
keystore.propertiesdosyanızı başka bir konumda depolamayı seçebilirsiniz (örneğin, projenin kök klasörü yerine modül klasöründe veya sürekli entegrasyon aracı kullanıyorsanız derleme sunucunuzda). Bu durumda, gerçek
keystore.propertiesdosyanızın konumunu kullanarak
keystorePropertiesFileuygulamasını doğru bir şekilde başlatmak için yukarıdaki kodu değiştirmeniz gerekir.
keystoreProperties['propertyName']söz dizimini kullanarak
keystorePropertiesiçinde depolanan özelliklere bakabilirsiniz. Bu söz dizimini kullanarak modülünüzün
build.gradledosyasının
signingConfigsbloğunu,
keystorePropertiesiçinde depolanan imzalama bilgilerine referans verecek şekilde değiştirin.
Modern
android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Kotlin
android { signingConfigs { create("config") { keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String } } ... }
- Varyant Oluşturma araç penceresini açın ve sürüm derleme türünün seçildiğinden emin olun.
- Sürüm derlemenizin APK'sını veya uygulama paketini oluşturmak için Derleme > Derleme Paketleri / APK'lar altında bir seçenek belirleyin.
Derleme çıkışını modülünüzün
build/outputs/dizininde görürsünüz.
Derleme dosyalarınız artık hassas bilgiler içermediğinden bunları artık kaynak kontrolüne dahil edebilir veya paylaşılan bir kod tabanına yükleyebilirsiniz.
keystore.properties dosyasını güvende tuttuğunuzdan emin olun. Buna, kaynak kontrol sisteminizden kaldırmanız da dahil olabilir.