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


89

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


5
так ви можете (також, чи пробували ви до того, як запитати?)
njzk2

Відповіді:


96

Ви можете використовувати це keystoreдля будь-якої кількості програм.

Не потрібно створювати нове сховище ключів.


6
А що стосується "Псевдоніма", що мені писати?
Dr.jacky

12
Магазин ключів Містить відкриту / приватну пари ключів, що складають сертифікат підпису. Один магазин ключів може містити багато пар ключів. "Псевдонім" - це посилання на певну пару ключів у магазині ключів. В одному магазині ключів можна вмістити всі ваші пари ключів, але у вас повинна бути одна пара ключів для кожного додатка. Як псевдонім використовуйте назву програми, яку ви підписуєте. Ви можете мати окремі паролі для свого магазину ключів і для кожної пари ключів у ньому. Ви можете змінити ці паролі та імпортувати / експортувати пари ключів із магазину ключів або додавати нові ключі до свого магазину ключів. Це все робиться за допомогою командного рядка 'keytool'. Шукай.
brycewjohnson

@brycewjohnson Чи можна додавати нові пари до магазину ключів через графічний інтерфейс?
CinCout

43

Поки що я наведу зустрічний аргумент до консенсусної відповіді.

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

Але я можу придумати одну дуже вагому причину, щоб мати окремі сховища ключів для окремих програм або сімейств програм. Якщо ви думаєте, що коли-небудь захочете продати додаток комусь іншому, щоб він опублікував його як оновлення до оригіналу, вам доведеться поділитися з ним своїм єдиним сховищем ключів і паролем, щоб зробити це. Можливо, це не велика проблема, але трохи хвилювання для вас і, можливо, проблема належної ретельності для досить великого покупця.

Крім того, я справді не читаю той самий рядок у документації так само, як @ol_v_er. Думаю, поточний рядок:

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

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


6
Ведення окремих магазинів ключів для кожної програми має бути правильним шляхом!
Суфіан

42

Офіційна документація повідомляє нам:

Загалом, рекомендованою стратегією для всіх розробників є підписання всіх ваших програм однаковим сертифікатом протягом очікуваного терміну служби ваших програм. Є кілька причин, чому ви повинні це робити ...

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

Так що так, спробуйте підписати всі свої заявки тим самим сертифікатом.


8
А що стосується "Псевдоніма", що мені писати?
Dr.jacky

6
Щоб зробити це просто, використовуйте те саме для всіх своїх додатків.
ol_v_er

18

Я хочу додати тут кілька роз’яснень, оскільки це запитання та відповіді надають мені плутанину. Дуже важливо зрозуміти, що насправді є магазином ключів.

Магазин ключів - це лише засіб для надійного зберігання пари відкритих / приватних ключів, яка використовується для підписання ваших Android-файлів. Так що так, ви можете використовувати один і той же магазин ключів для підписання декількох файлів apk без проблем. Ви також можете використовувати один і той же псевдонім (кожен псевдонім - це сертифікат), щоб підписати кілька apk, і це буде працювати. Однак це має наслідки для безпеки. Якщо ваш єдиний псевдонім порушено, то всі ваші програми будуть скомпрометовані.

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

Щоб було дуже зрозуміло, сховище ключів - це саме це, носій інформації для ключів. Він не відіграє фактичної ролі в процесі підписання apk, а служить лише для зберігання ключів, які фактично використовуються для підписання apk.

Список літератури:

Розуміння магазину ключів, сертифікатів та псевдонімів

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


1
Будь ласка, не публікуйте однакові відповіді на кілька запитань. Опублікуйте одну хорошу відповідь, а потім проголосуйте / позначте, щоб закрити інші запитання як дублікати. Якщо питання не є дублікатом, адаптуйте відповіді на запитання.
Пол Руб,

Вибачення. Я нуб до SO.
Ентоні Стіверс,

1
У мене недостатньо представників, щоб проголосувати за дублікат. Отже, якщо ви хочете проголосувати наступні запитання як дублікати, я вважаю, що це питання є найбільш доречним, щоб не дублікат. Це перше місце в Google за відповідними ключовими словами та має найбільш відповідні відповіді. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Ентоні Стіверс,

Чекай! Як я можу використовувати один і той же магазин ключів, але з різними псевдонімами для кожного додатка ?!
Ziad H.

5

Звичайно! Ви можете використовувати той самий файл сховища ключів скільки завгодно разів. Завжди краще використовувати один і той же файл сховища ключів для всіх програм, які ви розробляєте. Це допоможе, якщо ви хочете оновити або змінити програму. На той момент вам потрібно підписати свою заявку тим самим ключем.


2

Я підписую всі свої програми, використовуючи той самий сертифікат (магазин ключів). Це дає перевагу, якщо я передумаю і хочу, щоб мої програми передавали свої дані.

Як ви могли знати, Android ідентифікує кожну програму за допомогою UID. Якщо всі ваші програми підписані однаковим сертифікатом, ви можете попросити android призначити одному і тому ж ідентифікатору користувача більше одного додатка, і, зрештою, змусити їх запускатись в одному процесі та обмінюватися даними.

З android doc android: sharedUserId

android: sharedUserId

Ім'я ідентифікатора користувача Linux, який буде передано іншим програмам. За замовчуванням Android призначає кожному додатку свій унікальний ідентифікатор користувача. Однак, якщо для цього атрибута встановлено одне і те ж значення для двох або більше програм, усі вони матимуть однаковий ідентифікатор - за умови, що вони також підписані тим самим сертифікатом. Додаток з однаковим ідентифікатором користувача може отримати доступ до даних один одного і, за бажанням, запускатись у тому ж процесі


1

Останнє оновлення

Якщо ви хочете зареєструватися в програмі підписання програм за допомогою Google, вам потрібно використовувати новий інший ключ для підписання вашого apk або пакета, інакше після завантаження консолі Google ви отримаєте повідомлення про помилку

Ви завантажили файл .apk або пакет Android App Bundle, підписаний ключем, який також використовується для підписання файлів .apk, які доставляються користувачам. Оскільки ви зареєстровані в програмі Підписання додатків Google Play, перед підвантаженням слід підписати APK або пакет Android App Bundle новим ключем


Я зміг згенерувати новий ключ на екрані підписання apk android studio. Створіть новий магазин ключів та псевдонім, і це може спрацювати. У мене це спрацювало.
Нуман Карааслан,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.