İki farklı uygulamayı imzalamak için aynı anahtar deposu dosyasını kullanabilir miyim?


92

Yeni bir uygulama yüklemem gerekiyor, sadece biraz farklı olan tasarım. Dün uygulamayı imzalamak için anahtar deposu dosyasını oluşturdum. Ben de aynısını kullanabilir miyim?


5
evet yapabilirsin (ayrıca, sormadan önce denedin mi?)
njzk2

Yanıtlar:


98

Bunu keystoreherhangi bir sayıda uygulama için kullanabilirsiniz .

Yeni bir anahtar deposu oluşturmaya gerek yok.


6
Ve 'Alias' için ne yazmalıyım?
Dr.jacky

14
Anahtar deposu , imzalama sertifikasını oluşturan genel / özel anahtar çiftlerini İÇERİR . Bir anahtar deposu birçok anahtar çifti içerebilir. Bir 'diğer ad', anahtar deposundaki belirli bir anahtar çiftine referanstır. Bir anahtar deposu tüm anahtar çiftlerinizi tutabilir, ancak uygulama başına bir anahtar çiftiniz olmalıdır. İmzaladığınız uygulamanın adını takma ad olarak kullanın. Anahtar deponuz ve içindeki her anahtar çifti için ayrı parolalarınız olabilir. Bu parolaları değiştirebilir ve anahtar çiftlerini anahtar deposundan içe / dışa aktarabilir veya anahtar deponuza yeni anahtar çiftleri ekleyebilirsiniz. Bunların hepsi komut satırı 'keytool' komutuyla yapılır. Bakın.
brycewjohnson

@brycewjohnson Bir GUI aracılığıyla anahtar deposuna yeni çiftler eklenebilir mi?
CinCout

44

Şimdiye kadar fikir birliği cevabına karşı bir argüman yapacağım.

Çoğu uygulama yazarının uygulamalarınız arasında aynı anahtar deposu / sertifika / şifreyi paylaşmanın iyi çalışacağını kabul ediyorum. Önemli olan, uygulamalarınızın beklenen ömrü boyunca aynı sertifikayı kullanmaktır kendisini yükseltebilmesi için " .

Ancak, ayrı uygulamalar veya uygulama aileleri için ayrı anahtar depolarına sahip olmak için çok iyi bir neden düşünebilirim. Orijinaline yükseltme olarak yayınlamaları için başka birine bir uygulama satmak isteyebileceğinizi düşünüyorsanız, bunu yapmak için tek ve tek anahtar deponuzu ve şifrenizi onlarla paylaşmanız gerekir. Muhtemelen büyük bir sorun değil, sizin için biraz endişe ve belki de yeterince büyük bir alıcı için durum tespiti sorunu.

Ayrıca, dokümantasyondaki aynı satırı @ol_v_er ile aynı şekilde okumuyorum. Şu anki satırı düşünüyorum:

Uygulamalarınızın beklenen ömrü boyunca tüm uygulamalarınızı aynı sertifikayla imzalamalısınız.

(mevcut sürümde virgül olmamasına dikkat edin), yalnızca 'ömür boyu' önerisinin tüm uygulamalar için geçerli olduğunu vurgulamaktır, aslında sizi tüm uygulamalarınız için aynı sertifikayı kullanmaya yönlendirmez.


6
Her uygulama için ayrı anahtar depoları tutmanın yolu olmalı!
Sufian

Öneri, her uygulama için farklı bir dosya kullanmak, değil mi? Aynı anahtar deposu dosyasını birden fazla uygulama için kullanırsanız ne olur? Firebase / Google hizmetlerinde bazı sorunlara neden oluyor gibi görünüyor. Zaten yapılmışsa, yenisini (her uygulama için farklı bir tane) kullanmak imkansız sanırım, değil mi?
android geliştiricisi

42

Resmi belgeler bize şunları söylüyor:

Genel olarak, tüm geliştiriciler için önerilen strateji, uygulamalarınızın beklenen ömrü boyunca tüm uygulamalarınızı aynı sertifikayla imzalamaktır. Bunu yapmanız için birkaç neden var ...

https://developer.android.com/studio/publish/app-signing.html#considerations

Yani evet, tüm uygulamalarınızı aynı sertifika ile imzalamayı deneyin.


8
Ve 'Alias' için ne yazmalıyım?
Dr.jacky

6
Bunu basitleştirmek için tüm uygulamalarınız için aynı şeyi kullanın.
ol_v_er

19

Buraya biraz açıklama eklemek istiyorum, çünkü bu soru ve verilen cevaplar kafamı karıştırıyor. Bir anahtar deposunun gerçekte ne olduğunu anlamak çok önemlidir.

Anahtar deposu, Android apks'lerinizi imzalamak için kullanılan genel / özel anahtar çiftini güvenli bir şekilde depolamanın bir yoludur. Yani evet, aynı anahtar deposunu kullanabilirsiniz birden fazla apks'i imzalamak sorunsuz bir şekilde kullanabilirsiniz. Aynı takma adı (her diğer ad bir sertifikadır) birden fazla apk imzalamak için de kullanabilirsiniz ve çalışacaktır. Bununla birlikte, güvenlik açısından etkileri vardır. Tek takma adınızın güvenliği ihlal edilirse, tüm uygulamalarınızın güvenliği ihlal edilmiş olur.

Ancak, bir gün uygulamalarınızın haklarını satmayı düşünüyorsanız, tüm uygulamalarınız için aynı takma adı kullanmak iyi bir fikir olmayabilir. Ancak, her apk için farklı bir takma ad kullanmanız koşuluyla, aynı anahtar deposunu kullanmak kötü bir seçenek olmayabilir. Bir sertifikayı bir anahtar deposundan diğerine taşımanın bir yolu olduğundan eminim, böylece yalnızca o sertifika için gerekli anahtarları güvenli bir şekilde alıcınıza verebilirsiniz.

Açıkça söylemek gerekirse, bir anahtar deposu, anahtarlar için bir depolama ortamıdır. Bir apk imzalama sürecinde gerçek bir rol oynamaz, ancak yalnızca gerçekten apk imzalamak için kullanılan anahtarları saklamaya yarar.

Referanslar:

Anahtar deposu, sertifikalar ve diğer adları anlama

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


1
Lütfen birden fazla soruya aynı cevapları göndermeyin. İyi bir yanıt gönderin, ardından diğer soruları kopya olarak kapatmak için oylayın / işaretleyin. Soru yinelenmemişse, yanıtlarınızı soruya uyarlayın.
Paul Roub

Özür dilerim. SO'ya çaylakım.
Anthony Stivers

1
Bir kopyaya oy vermek için yeterli temsilcim yok. Bu nedenle, aşağıdaki soruları mükerrer olarak oylamak isterseniz, bu sorunun mükerrer olmak için en uygun soru olduğunu düşünüyorum. Google'da alakalı anahtar kelimeler için ilk sırada yer alır ve en alakalı cevaplara sahiptir. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers

Bekle! Aynı anahtar deposunu her uygulama için farklı takma adla nasıl kullanabilirim ?!
Ziad H.

5

Elbette! Aynı anahtar deposu dosyasını istediğiniz kadar kullanabilirsiniz. Geliştirdiğiniz tüm uygulamalar için aynı anahtar deposu dosyasını kullanmak her zaman daha iyidir. Uygulamayı güncellemek veya değiştirmek isterseniz bu yardımcı olacaktır. O zaman başvurunuzu aynı anahtarla imzalamanız gerekir.


2

Tüm uygulamalarımı aynı sertifikayı (anahtar deposu) kullanarak imzalıyorum. Fikrimi değiştirirsem ve uygulamalarımın verilerini paylaşmasını istersem bu bir avantaj sağlar.

Bildiğiniz gibi, Android her uygulamayı bir UID ile tanımlar. Tüm uygulamalarınız aynı sertifika ile imzalanmışsa, android'in aynı kullanıcı kimliğini birden fazla uygulama atamasını isteyebilir ve bunları tek bir işlemde çalıştırıp verileri paylaşmasını sağlayabilirsiniz.

Android doc android'den: sharedUserId

android: sharedUserId

Diğer uygulamalarla paylaşılacak olan Linux kullanıcı kimliğinin adı. Varsayılan olarak, Android her uygulamaya kendi benzersiz kullanıcı kimliğini atar. Ancak, bu öznitelik iki veya daha fazla uygulama için aynı değere ayarlanırsa, aynı sertifika ile imzalanmış olmaları koşuluyla, hepsi aynı kimliği paylaşacaktır. Aynı kullanıcı kimliğine sahip uygulama birbirlerinin verilerine erişebilir ve istenirse aynı işlemde çalıştırılabilir


1

Son Güncelleme

Google tarafından Uygulama imzalamaya kaydolmak istiyorsanız , apk'nizi veya paketinizi imzalamak için yeni farklı anahtar kullanmanız gerekir, aksi takdirde Google konsolunu yükledikten sonra size hata mesajı verecektir.

Kullanıcılara teslim edilen APK'ları imzalamak için de kullanılan bir anahtarla imzalanmış bir APK veya Android App Bundle yüklediniz. Google Play'den Uygulama İmzalama'ya kaydolduğunuz için, APK'nızı veya Android App Bundle'ınızı yüklemeden önce yeni bir anahtarla imzalamalısınız


Android stüdyo apk imzalama ekranında yeni bir anahtar oluşturabildim. Yeni anahtar deposu ve takma ad oluşturun ve çalışabilir. Benim için çalıştı.
Numan Karaaslan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.