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