Файл хранилища ключей, созданный Keytool, хранит пары закрытых и открытых ключей. Каждая пара или запись, хранящаяся в хранилище ключей, имеет уникальный псевдоним. Вкратце:
Запись в хранилище ключей = пара закрытых + открытых ключей = идентифицируется псевдонимом
Хранилище ключей защищает каждый закрытый ключ своим индивидуальным паролем, а также защищает целостность всего хранилища ключей (возможно, другим) паролем.
Например, когда вы подписываете приложение Android с помощью параметра «Экспорт подписанного пакета приложения» инструмента Eclipse Android, вам сначала предлагается выбрать хранилище ключей, а затем предлагается выбрать один псевдоним / запись / пару из этого хранилища ключей. После предоставления паролей как для хранилища ключей, так и для выбранного псевдонима приложение подписывается, и открытый ключ (сертификат) для этого псевдонима внедряется в APK.
Теперь, чтобы ответить на ваш вопрос, вы можете выпустить обновление только для приложения, которое было подписано псевдонимом «foo», подписав обновление еще раз с тем же псевдонимом. Потеря хранилища ключей, в котором хранится ваш псевдоним, помешает вам выпустить обновленную версию вашего приложения.
Однако есть способ подписать приложение новым псевдонимом, но он включает в себя клонирование существующего псевдонима в хранилище ключей с помощью keytool -keyclone :
Создает новую запись в хранилище ключей с той же цепочкой закрытых ключей и сертификатов, что и исходная запись.
Исходная запись идентифицируется псевдонимом (по умолчанию используется mykey, если он не указан). Новая (конечная) запись идентифицируется dest_alias. Если в командной строке не указан псевдоним назначения, пользователю предлагается его ввести.
Если пароль закрытого ключа отличается от пароля хранилища ключей, то запись будет клонирована только в том случае, если предоставлен действительный пароль. Это пароль, используемый для защиты закрытого ключа, связанного с псевдонимом. Если ключевой пароль не указан в командной строке, а пароль закрытого ключа отличается от пароля хранилища ключей, пользователю предлагается ввести его. При желании закрытый ключ в клонированной записи может быть защищен другим паролем. Если в командной строке не задана опция -new, пользователю предлагается ввести пароль новой записи (и он может выбрать такой же пароль, как и для закрытого ключа клонированной записи).
Больше информации:
http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html
http://developer.android.com/guide/publishing/app-signing.html