Muszę wgrać nową aplikację, to tylko trochę inny projekt. Wczoraj wygenerowałem plik kluczy do podpisywania aplikacji. Czy mogę użyć tego samego?
Muszę wgrać nową aplikację, to tylko trochę inny projekt. Wczoraj wygenerowałem plik kluczy do podpisywania aplikacji. Czy mogę użyć tego samego?
Odpowiedzi:
Możesz tego użyć keystore
do dowolnej liczby aplikacji.
Nie ma potrzeby generowania nowego magazynu kluczy.
Przedstawię jak dotąd kontrargument do zgodnej odpowiedzi.
Zgadzam się, że dla większości autorów aplikacji przez większość czasu udostępnianie tego samego magazynu kluczy / certyfikatu / hasła między aplikacjami będzie działało dobrze. Najważniejsze jest używanie „ tego samego certyfikatu przez cały oczekiwany okres użytkowania aplikacji ”, aby aplikacja mogła się uaktualniać.
Ale przychodzi mi do głowy jeden bardzo dobry powód, aby mieć oddzielne magazyny kluczy dla oddzielnych aplikacji lub rodzin aplikacji. Jeśli myślisz, że kiedykolwiek będziesz chciał sprzedać aplikację komuś innemu, aby mógł ją opublikować jako uaktualnienie do oryginału, musisz udostępnić jej jedyny magazyn kluczy i hasło, aby to zrobić. Prawdopodobnie nie jest to duży problem, ale trochę zmartwienia dla ciebie i być może kwestia należytej staranności dla wystarczająco dużego nabywcy.
Poza tym naprawdę nie czytam tej samej linii w dokumentacji w taki sam sposób, jak robi to @ol_v_er. Myślę, że obecna linia:
Wszystkie aplikacje należy podpisywać tym samym certyfikatem przez cały przewidywany okres ich użytkowania.
(zwróć uwagę na brak przecinka w aktualnej wersji) po prostu podkreśla, że zalecenie „dożywotnia” dotyczy wszystkich aplikacji, a nie kieruje w rzeczywistości do używania tego samego certyfikatu dla wszystkich aplikacji.
Oficjalna dokumentacja mówi nam:
Ogólnie zalecaną strategią dla wszystkich programistów jest podpisywanie wszystkich aplikacji tym samym certyfikatem przez cały oczekiwany okres ich użytkowania. Jest kilka powodów, dla których warto to zrobić ...
https://developer.android.com/studio/publish/app-signing.html#considerations
Więc tak, spróbuj podpisać wszystkie swoje aplikacje tym samym certyfikatem.
Chcę tutaj dodać wyjaśnienie, ponieważ to pytanie i udzielone odpowiedzi wprowadzają mnie w zakłopotanie. Ważne jest, aby zrozumieć, czym właściwie jest magazyn kluczy.
Magazyn kluczy to tylko sposób na bezpieczne przechowywanie pary kluczy publiczny / prywatny, która jest używana do podpisywania aplikacji na Androida. Więc tak, możesz bez problemu używać tego samego magazynu kluczy do podpisywania wielu aplikacji. Możesz także użyć tego samego aliasu (każdy alias jest certyfikatem) do podpisania wielu apek i to zadziała. Ma to jednak wpływ na bezpieczeństwo. Jeśli Twój pojedynczy alias zostanie przejęty, wszystkie Twoje aplikacje zostaną przejęte.
Jeśli jednak zamierzasz pewnego dnia sprzedać prawa do swoich aplikacji, używanie tego samego aliasu do wszystkich aplikacji może nie być dobrym pomysłem. Jednak użycie tego samego magazynu kluczy, pod warunkiem, że używasz innego aliasu dla każdego apk, niekoniecznie musi być złą opcją. Jestem pewien, że istnieje sposób na przeniesienie certyfikatu z jednego magazynu kluczy do drugiego, tak aby można było bezpiecznie przekazać kupującemu klucze niezbędne tylko do tego certyfikatu.
Aby było jasne, magazyn kluczy jest właśnie tym, nośnikiem przechowywania kluczy. Nie odgrywa żadnej rzeczywistej roli w procesie podpisywania apk, ale służy tylko do przechowywania kluczy, które są faktycznie używane do podpisywania apk.
Bibliografia:
Zrozumienie magazynu kluczy, certyfikatów i aliasów
https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores
Oczywiście! Możesz używać tego samego pliku kluczy tyle razy, ile chcesz. Zawsze lepiej jest używać tego samego pliku kluczy dla wszystkich tworzonych aplikacji. To pomoże, jeśli chcesz zaktualizować lub zmodyfikować aplikację. Wówczas musisz podpisać swoją aplikację tym samym kluczem.
Podpisuję wszystkie moje aplikacje przy użyciu tego samego certyfikatu (magazynu kluczy). Daje to korzyść, jeśli zmienię zdanie i chcę, aby moje aplikacje udostępniały swoje dane.
Jak być może wiesz, Android identyfikuje każdą aplikację za pomocą identyfikatora UID. Jeśli wszystkie Twoje aplikacje są podpisane tym samym certyfikatem, możesz poprosić Androida o przypisanie tego samego identyfikatora użytkownika do więcej niż jednej aplikacji, a następnie uruchomienie ich w jednym procesie i udostępnianie danych.
Z android doc android: sharedUserId
android: sharedUserId
Nazwa identyfikatora użytkownika systemu Linux, który będzie udostępniany innym aplikacjom. Domyślnie system Android przypisuje każdej aplikacji własny, unikalny identyfikator użytkownika. Jeśli jednak ten atrybut ma taką samą wartość dla dwóch lub więcej aplikacji, wszystkie będą miały ten sam identyfikator - pod warunkiem, że są również podpisane tym samym certyfikatem. Aplikacje z tym samym identyfikatorem użytkownika mogą uzyskiwać wzajemny dostęp do danych i, w razie potrzeby, działać w tym samym procesie
Ostatnia aktualizacja
Jeśli chcesz zarejestrować się w podpisywaniu aplikacji przez Google , musisz użyć nowego innego klucza do podpisania swojego apk lub pakietu, w przeciwnym razie po przesłaniu konsoli Google wyświetli się komunikat o błędzie:
Przesłałeś plik APK lub pakiet aplikacji na Androida, który jest podpisany kluczem używanym również do podpisywania plików APK dostarczanych użytkownikom. Ponieważ jesteś zarejestrowany w Podpisywaniu aplikacji przez Google Play, powinieneś podpisać swój plik APK lub pakiet aplikacji na Androida nowym kluczem, zanim go prześlesz