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

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

Ответ 1

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

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

Ответ 2

Официальная документация сообщает нам:

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

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

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

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

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

Литература:

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

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

Ответ 5

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

Ответ 6

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

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

От android doc android: sharedUserId

андроида: sharedUserId

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