Могу ли я использовать один и тот же файл хранилища ключей для подписи двух разных приложений?

Я должен загрузить новое приложение, это просто дизайн, который немного отличается. Вчера я сгенерировал файл хранилища ключей для подписи приложений. Могу ли я использовать то же самое?

6 ответов


можно использовать keystore для любого числа применений.

нет необходимости создавать новое хранилище ключей.


официальная документация говорит нам:

В общем, рекомендуемая стратегия для всех разработчиков-подписать все ваши приложения с одним сертификатом в течение ожидаемого срока службы ваших приложений. Есть несколько причин, почему вы должны это сделать ...

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

Так что да, попробуйте подписать все ваши приложения с тем же сертификат.


Я сделаю встречный аргумент к консенсусному ответу до сих пор.

Я согласен, что для большинства авторов приложений большую часть времени совместное использование одного хранилища ключей/сертификата/пароля между вашими приложениями будет работать нормально. Самое главное-использовать "тот же сертификат в течение ожидаемого срока службы ваших приложений " таким образом, приложение может обновить себя.

но я могу придумать одну очень хорошую причину иметь отдельные хранилища ключей для отдельных приложений или семейств приложений. Если вы думаете, что когда-нибудь захотите продать приложение кому-то другому, чтобы они опубликовали его как обновление до оригинала, вам придется поделиться с ними своим единственным хранилищем ключей и паролем. Вероятно, не огромная проблема, но немного беспокойства для вас и, возможно, проблема должной осмотрительности для достаточно крупного покупателя.

кроме того, я действительно не читаю ту же строку в документации так же, как @ol_v_er. Я думаю, что текущая строка:

вы должны записать все ваши приложения с одним и тем же сертификатом в течение ожидаемого срока службы ваших приложений.

(обратите внимание на отсутствие запятой в текущей версии) просто подчеркивает, что рекомендация "lifetime" применяется ко всем приложениям, а не фактически направляет вас на использование одного и того же сертификата для всех ваших приложений.


Я хочу добавить некоторые разъяснения здесь, потому что этот вопрос и ответы привести к путанице для меня. Очень важно понять, что такое хранилище ключей.

хранилище ключей-это просто средство для безопасного хранения пары открытый / закрытый ключ, который используется для подписи ваших Android apks. Так что да, вы можете использовать то же самое хранилище подписать несколько apks, без проблем. Вы также можете использовать один и тот же псевдоним (каждый псевдоним является сертификатом) для подписи нескольких apks, и он будет работать. Однако это имеет последствия для безопасности. Если ваш единственный псевдоним скомпрометирован, то все ваши приложения будут скомпрометированы.

однако, если вы собираетесь продать права на свои приложения в один прекрасный день, то использование одного и того же псевдонима для всех ваших приложений может быть не очень хорошей идеей. Однако использование одного и того же хранилища ключей при условии использования разных псевдонимов для каждого apk не обязательно может быть плохим вариантом. Я уверен, что есть способ переместить сертификат из одного хранилища ключей в другое, поэтому что вы можете безопасно дать необходимые ключи только для этого сертификата вашему покупателю.

чтобы было очень ясно, хранилище ключей-это просто носитель для хранения ключей. Он не играет реальной роли в процессе подписания apk, но служит только для хранения ключей, которые фактически используются для подписания apk.

ссылки:

понимание хранилища ключей, сертификатов и псевдоним

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


конечно! Вы можете использовать один и тот же файл хранилища ключей столько раз, сколько хотите. Это всегда лучше использовать один и тот же файл хранилища ключей для всех приложений, которые вы разрабатываете. Это поможет, если вы хотите обновить или изменить применение. В это время вам нужно подписать заявку с тем же ключом.


Я подписываю все свои приложения, используя один и тот же сертификат (хранилище ключей). Это дает преимущество, если я передумаю и хочу, чтобы мои приложения делились своими данными.

Как вы знаете, Android идентифицирует каждое приложение с UID. Если все ваши приложения подписаны одним и тем же сертификатом, вы можете запросить android назначить один и тот же идентификатор пользователя более чем одному приложению, и inturn заставит их работать в одном процессе и обмениваться данными.

из Android doc android: sharedUserId

android: sharedUserId

имя идентификатора пользователя Linux, который будет использоваться совместно с другими приложениями. По умолчанию, Android присваивает каждому приложению уникальный идентификатор пользователя. Однако если этот атрибут имеет одинаковое значение для двух или более приложений, все они будут иметь одинаковый ID - при условии, что они также подписаны одним сертификатом. Приложение с одинаковым идентификатором пользователя может получить доступ к данным друг друга и, если желательно, запустить в том же процессе