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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Хранилище ключей – это просто средство безопасного хранения пары открытых / закрытых ключей, которая используется для подписи ваших Android-приложений. Итак, да, вы можете использовать одно и то же хранилище ключей для подписи нескольких 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

андроид: sharedUserId

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

  • Ресурсы Android $ NotFoundException: Идентификатор ресурса # 0x7f030027
  • Воспроизведение произвольного тона с Android
  • Как установить другую метку для запуска, а не название действия?
  • Как я могу использовать frameworks анимации внутри canvasа?
  • Получить текущий объект fragmentа
  • Каковы различия между активностью и fragmentом
  • ListFragment не принимает мой макет
  • Служба Android для проверки возможности подключения к Интернету?
  • как получить текущее местоположение в google map android
  • Как раздуть один вид с помощью макета
  • Обновление области в Android-проекте
  • Interesting Posts

    Вставка онлайн-изображения в Excel с помощью VBA

    Исключение в streamе “main” java.io.FileNotFoundException: Ошибка

    Как работает гарантированное копирование?

    Передача строкового литерала в качестве параметра в class шаблонов C ++

    напечатать имя переменной в Matlab

    В чем разница между запуском @powershell и powershell (любая команда с @ на передней панели)?

    Не удалось установить библиотеки Python

    Класс расширяет React.Component не может использовать getInitialState в React

    свойство flexbox и wrap

    Есть ли способ проверить, содержат ли две коллекции одни и те же элементы, независимо от порядка?

    Есть ли возможность динамически генерировать имена переменных в Java?

    Документация-генератор для Objective-C?

    RecyclerView и java.lang.IndexOutOfBoundsException: обнаружена несогласованность. Недействительный адаптер держателя держателя ViewView в устройствах Samsung

    Http получить из оболочки в Mac OS X

    Каков наилучший способ обмена файлами между linux и windows 7 на компьютере с двойной / многопользовательской загрузкой?

    Давайте будем гением компьютера.