2011-10-07 45 views

回答

55

您可以將keystore用於任意數量的應用程序。

無需生成新的密鑰庫。

+6

而對於「別名」,我應該寫什麼? –

+0

密鑰庫*包含組成簽名證書的公鑰/私鑰對。一個密鑰庫可以包含許多密鑰對。 '別名'是對密鑰庫中特定密鑰對的引用。一個密鑰庫可以容納所有的密鑰對,但是每個應用程序應該有一個密鑰對。使用您正在簽名的應用程序的名稱作爲別名。您可以爲密鑰庫和密鑰庫中的每個密鑰對分別設置密碼。您可以更改這些密碼並從密鑰庫導入/導出密鑰對,也可以將新密鑰對添加到密鑰庫中。這全部通過命令行'keytool'命令完成。看看它。 – brycewjohnson

2

當然!您可以多次使用相同的密鑰庫文件。對開發的所有應用程序使用相同的密鑰庫文件總是更好。如果您想更新或修改應用程序,這將有所幫助。那時您需要使用相同的密鑰簽署您的應用程序。

31

的官方文檔告訴我們:

一般來說,所有開發人員的建議的策略是簽署所有應用程序使用同一證書,整個應用程序的預期壽命。有幾個原因,你應該這樣做......

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

所以,是的,儘量使用同一證書籤署所有的應用程序。

+6

而對於'別名',我該寫什麼? –

+5

爲了簡化操作,還可以爲所有應用程序使用相同的功能。 –

29

我會就迄今爲止的共識答案提出反駁。

我同意大多數應用程序作者在大多數時間在應用程序之間共享相同的密鑰庫/證書/密碼都可以正常工作。關鍵的是使用「the same certificate throughout the expected lifespan of your applications」,所以應用程序可以自行升級。

但我可以想到一個非常好的理由,爲單獨的應用程序或應用程序家族分別設置密鑰庫。如果您認爲您可能曾經想將應用出售給其他人,以便他們將其升級爲原版,那麼您必須與他們分享您的一次性密鑰存儲庫和密碼才能這樣做。可能不是一個大問題,但對你來說有點擔心,或許是對一個足夠大的買家的盡職調查問題。

此外,我真的不像@ol_v_er那樣讀取文檔中的同一行。我認爲當前行:

您應該在應用程序的預期使用期限內爲所有應用程序簽署相同的證書。

(注意在當前版本中缺少逗號)僅僅強調「生命週期」建議適用於所有應用程序,而不是實際指示您爲所有應用程序使用相同的證書。

+3

爲每個應用程序保留單獨的密鑰存儲應該是最好的選擇! – Sufian

1

我不籤使用相同的證書(密鑰庫)我所有的應用程序。如果我改變主意並希望我的應用程序共享他們的數據,這會帶來好處。

正如你可能知道Android使用UID標識每個應用程序。如果您的所有應用都由相同的證書籤名,則可以請求android爲多個應用分配相同的用戶標識,並讓它們在單個進程中運行並共享數據。

從機器人DOC android:sharedUserId

機器人:sharedUserId

將與其它應用程序共享一個Linux用戶ID的名稱。默認情況下,Android爲每個應用程序分配自己唯一的用戶ID。但是,如果此屬性設置爲兩個或更多應用程序的相同值,則它們將共享相同的ID - 前提是它們也由相同的證書籤名。使用相同的用戶ID應用程序可以訪問對方的數據,如果需要的話,在同一個進程

相關問題