Как включить подписку в Google Play

113

Я думаю, что многие разработчики пытаются узнать больше о новой функции подписи приложений Google Play, представленной на Google I / O 2017.

Возможность хранить хранилище ключей для подписи приложений внутри Google Play избавляет вас от усилий по безопасному хранению хранилища ключей и может помочь системе оптимизировать APK-файлы, обслуживаемые для каждого устройства, в зависимости от характеристик оборудования и ОС.

Вы можете узнать больше об этой теме в официальной документации здесь: https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .

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

MatPag
источник

Ответы:

189

Это руководство предназначено для разработчиков, у которых уже есть приложение в Play Store. Если вы начинаете с нового приложения, процесс будет намного проще, и вы можете следовать указаниям пункта «Новые приложения» здесь.

Предпосылки, которые уже есть у 99% разработчиков :

  1. Android Studio

  2. JDK 8, и после установки вам необходимо настроить переменную среды в пользовательском пространстве, чтобы упростить команды терминала. В Windows x64 вам нужно добавить это: C:\Program Files\Java\{JDK_VERSION}\binв Pathпеременную среды. (Если вы не знаете, как это сделать, вы можете прочитать мое руководство по добавлению папки в Windows 10Path переменную среды ).

Шаг 0 : Откройте консоль разработчика Google Play, затем перейдите в Управление выпусками -> Подписание приложений .

введите описание изображения здесь

Примите Условия использования подписи приложений.

введите описание изображения здесь

Шаг 1 : Загрузите PEPK Tool, нажав кнопку, идентичную изображенной ниже.

введите описание изображения здесь

Шаг 2 : Откройте терминал и введите:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OUTPUT_FILE --encryptionkey = GOOGLE_ENCRYPTION_KEY

Легенда:

  • PATH_TO_PEPK = путь к pepk.jar, который вы загрузили на шаге 1 , может быть чем-то вроде C:\Users\YourName\Downloads\pepk.jarдля пользователей Windows.
  • PATH_TO_KEYSTORE = Путь к хранилищу ключей, который вы используете для подписи APK- файла выпуска. Это может быть файл типа * .keystore или * .jks или без расширения. Что-то вроде C:\Android\mykeystoreили и C:\Android\mykeystore.keystoreт.д ...
  • ALIAS_YOU_USE_TO_SIGN_APK = Имя псевдонима, который вы используете для подписи APK выпуска.
  • PATH_TO_OUTPUT_FILE = Путь к выходному файлу с расширением .pem, что-то вродеC:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Этот ключ шифрования всегда должен быть одинаковым. Вы можете найти его на странице подписи приложений, скопировать и вставить. Должно быть в таком виде:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Пример:

java -jar "C: \ Users \ YourName \ Downloads \ pepk.jar" --keystore = "C: \ Android \ mykeystore" --alias = myalias --output = "C: \ Android \ private_key.pem" - encryptionkey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cad

Нажмите Enter, и вам нужно будет указать по порядку:

  1. Пароль хранилища ключей
  2. Пароль псевдонима

Если все прошло нормально, теперь у вас будет файл в папке PATH_TO_OUTPUT_FILE с именем private_key.pem .

Шаг 3. Загрузите файл private_key.pem, нажав кнопку, идентичную изображенной ниже.

введите описание изображения здесь

Шаг 4 Создайте новый файл хранилища ключей с помощью Android Studio.

ВАМ НУЖЕН ЭТОТ КЛЮЧЕВОЙ ХРАНИЛИЩ В БУДУЩЕМ, ЧТОБЫ ПОДПИСАТЬ СЛЕДУЮЩИЕ ВЫПУСКИ ВАШЕГО ПРИЛОЖЕНИЯ, НЕ ЗАБУДЬТЕ ПАРОЛИ

Откройте один из ваших Android-проектов (выберите произвольно). Перейдите в Build -> Generate Signed APK и нажмите Create new .

введите описание изображения здесь

Теперь вам необходимо заполнить обязательные поля.

Путь к хранилищу ключей представляет новое хранилище ключей, которое вы создадите, выберите папку и имя, используя значок с тремя точками справа, я выбрал C:\Android\upload_key.jks выбрал (расширение .jks будет добавлено автоматически)

ПРИМЕЧАНИЕ. Я использовал uploadв качестве нового псевдонима, но если вы ранее использовали одно и то же хранилище ключей с разными псевдонимами для подписи разных приложений, вам следует выбрать то же имя псевдонима, которое вы ранее использовали в исходном хранилище ключей.

введите описание изображения здесь

Нажмите ОК, когда закончите, и теперь у вас будет новый upload_key.jks хранилище ключей. Вы можете закрыть Android Studio сейчас.

Шаг 5 : Нам нужно извлечь сертификат загрузки из вновь созданного upload_key.jksхранилища ключей. Откройте терминал и введите:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -file PATH_TO_OUTPUT_FILE

Легенда:

  • UPLOAD_KEYSTORE_PATH = Путь к только что созданному складу ключей загрузки. В этом случае было C:\Android\upload_key.jks.
  • UPLOAD_KEYSTORE_ALIAS = Новый псевдоним, связанный с хранилищем ключей загрузки. В этом случае было upload.
  • PATH_TO_OUTPUT_FILE = Путь к выходному файлу с расширением .pem. Что-то вроде C:\Android\upload_key_public_certificate.pem.

Пример:

keytool -export -rfc -keystore "C: \ Android \ upload_key.jks" -alias upload -file "C: \ Android \ upload_key_public_certificate.pem"

Нажмите Enter, и вам нужно будет указать пароль хранилища ключей.

Теперь, если все прошло нормально, у вас будет файл в папке PATH_TO_OUTPUT_FILE с именем upload_key_public_certificate.pem .

Шаг 6. Загрузите upload_key_public_certificate.pemфайл, нажав кнопку, идентичную изображенной ниже.

введите описание изображения здесь

Шаг 7 : Нажмите кнопку ENROLL в конце страницы подписи приложения.

введите описание изображения здесь

Теперь каждый новый выпуск APK должен быть подписан upload_key.jksхранилищем ключей и псевдонимами, созданными на шаге 4. , перед загрузкой в ​​консоль разработчика Google Play.

Дополнительные ресурсы:

Вопросы и ответы

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

О: Установите флажок, чтобы подписать APK обеими подписями (V1 и V2) при создании APK выпуска. Читать здесь .

ОБНОВЛЕНО

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

«Ключ загрузки (необязательно для существующих приложений): новый ключ, который вы создаете во время регистрации в программе. Вы будете использовать ключ загрузки для подписи всех будущих APK-файлов перед их загрузкой в ​​Play Console». https://support.google.com/googleplay/android-developer/answer/7384423

MatPag
источник
3
Ваше прохождение очень полезно! Они должны разместить это на официальном сайте lol. В именах путей к вашим примерам отсутствуют кавычки "_", что вызовет ошибку на консоли W10
NukeouT
3
Кавычки нужны только в том случае, если у вас есть хотя бы один пробел внутри ваших путей, но так работает каждая консольная команда. Таким образом, вы должны использовать кавычки, если ваш путь: "C:\My Path\MyName"но не, если путь C:\MyPath\MyName. Кстати, спасибо :)
MatPag
1
@layth Создание нового хранилища ключей - это Step 4руководство: D
MatPag
1
Я сделал это, но когда я получил ваше новое диалоговое окно хранилища ключей, его путь к хранилищу ключей и поля пароля были пустыми, поэтому я указал им на старое хранилище ключей и ввел его старый пароль - кстати, в настоящее время застрял на "keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -" файл PATH_TO_OUTPUT_FILE "продолжает жаловаться, что не знает, что означает keytool. Я попытался добавить «C: \ Program Files \ Java \ jdk1.8.0_25 \ bin \ keytool.exe», но это не сработало, возможно потому, что я не знаю, куда именно его поместить ..
NukeouT
9
Похоже, Google изменил процедуру, потому что я больше не могу найти PEPK Tool.
Андреа Мотто,
31

Есть гораздо более простое решение, которое займет минуту.

  1. В консоли Google Play выберите Управление выпуском -> Подписание приложения.
  2. Выберите первый вариант: сгенерировать зашифрованный закрытый ключ с помощью Android Studio (или что-то в этом роде; я больше не могу вернуться, чтобы увидеть эту страницу)
  3. В Android Studio сгенерируйте свой Android App Bundle (файл .aap) из Build -> Generate Signed Bundle / APK ... , выберите опцию Android App Bundle и не забудьте установить флажок Export Encrypted key (необходимо для регистрации вашего приложения в Google Play App подписание) вариант. Если у вас нет сгенерированного хранилища ключей, создайте одно специальное.
  4. Теперь о «хитрой» части. После создания .aap Android Studio отобразит всплывающее уведомление в правом нижнем углу, содержащее путь к месту, где сохраняется файл .aap. В том же уведомлении, если вы его развернете, вы найдете еще одну ссылку на путь, по которому был сохранен закрытый ключ (называемый private_key.pepk ). Если вы пропустите это уведомление, не волнуйтесь, просто откройте журнал событий окна, нажав журнал событий кнопки на нижней правой стороне , и вы увидите ту же информацию. Откройте это место. Для меня это C: \ Users \ yourUser \ .android.

введите описание изображения здесь

  1. Вернитесь в браузер и нажмите кнопку ПОДПИСАНИЕ ЧАСТНОГО КЛЮЧА ПРИЛОЖЕНИЯ и перейдите к местоположению закрытого ключа на вашем компьютере.

Готово!

Теперь вы можете загрузить созданный ранее релиз :) Удачи!

Мариус Танасойу
источник
1
Это лучший и более простой ответ
Саймон
Сэкономила мне столько времени и, что еще важнее, душевного покоя
Минохара
Я не получаю эту опцию Экспорт зашифрованного ключа (необходим для регистрации вашего приложения для подписи в Google Play).
Джарвис
Я был бы очень признателен за более полное объяснение пункта 5 - я не вижу этой кнопки, где она, возможно, макет изменился в последних обновлениях?
androidneil
хорошо, теперь я хочу узнать об этом при следующем обновлении, что делать ?? например, нам снова нужен ключ .pepk, или мы должны подписать версию 2, используя тот же ключ, или новый закрытый ключ .pepk, пожалуйста, помогите
Сунил Чаудхари
16

При переносе файла пакета приложения Android (APK) в Android App Bundle (AAB), публикации приложения в Play Store я столкнулся с этой проблемой и решил ее, как показано ниже ...

При создании .aabфайла вам будет предложено указать место для хранения пути экспорта ключа, как показано ниже:

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

После того, как вы войдете в консоль Google Play с учетными данными магазина воспроизведения: выберите свой проект с левой стороны, выберите параметр подписи приложения Управление выпуском >> Подписание приложения введите описание изображения здесь

вы найдете окно Сертификации подписи приложений Google ПРИНИМАЙТЕ его.

После этого вы найдете три переключателя выбора **

Загрузить ключ, экспортированный из переключателя Android Studio

**, это расширит вашу кнопку ПОДПИСАНИЕ ПРИЛОЖЕНИЯ ЧАСТНЫЙ КЛЮЧ, как показано ниже

введите описание изображения здесь

нажмите на кнопку и выберите .pepkфайл (Мы сохранили при создании.aab файла, как указано выше)

Прочтите все остальные варианты и отправьте.

После успешного завершения вы можете вернуться к выпуску приложения, просмотреть файл .aab и завершить RollOut ...

@Ambilpura

Амбильпура Сунил Кумар
источник
хорошо, теперь я хочу узнать об этом при следующем обновлении, что делать ?? например, нам снова нужен ключ .pepk, или мы должны подписать версию 2, используя тот же ключ, или новый закрытый ключ .pepk, пожалуйста, помогите
Сунил Чаудхари
Насколько я понимаю, нет необходимости создавать в следующий раз, вы можете использовать старый ключ .pepk ....
Амбильпура Сунил Кумар
Как вы используете .pepk для обновления? Я успешно использовал подпись приложений Google при загрузке своего приложения, но теперь я пытаюсь отправить обновление и не знаю, как @AmbilpuraSunilKumar
nt95,
Тоже самое. Я просто загружаю abb в play store и полностью игнорирую файл .pepk. Было бы неплохо узнать, для чего именно оно подходит и что делать при обновлении приложения.
Джулиан Эггерс
4

Пришлось сделать следующее:

  1. Создать приложение в консоли Google Play введите описание изображения здесь

2. перейти к Выпуски приложений -> Управление производством -> Создать выпуск.

3.Нажмите "Продолжить" в Google Play App Signing. введите описание изображения здесь

4. Создайте сертификат загрузки, запустив «keytool -genkey -v -keystore c: \ path \ to \ cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000»

5.Подпишите свой apk сгенерированным сертификатом (c: \ path \ to \ cert.keystore)

6.Загрузите подписанный apk в Выпуски приложений -> Управление производством -> Редактировать выпуск

7. После загрузки apk сертификат, созданный на шаге 4, был добавлен в сертификаты подписи приложений и стал вашим сертификатом подписи для всех будущих сборок.

это подделка
источник
1
Я сделал именно это, но вход в Google из моего приложения не работает, если я устанавливаю приложение через Google Play Store. * Но * если я загружу apk со страницы управления выпуском и установлю его вручную в свой эмулятор / устройство, он заработает. Есть идеи, что мне не хватает?
Рагхудеван Шанкар
Я искал везде около 3 часов, и ты наконец спас меня!
Оливер Диксон
3

Когда вы используете Fabric для общедоступных бета-версий (подписанных с помощью конфигурации prod), НЕ ИСПОЛЬЗУЙТЕ подпись приложений Google Play. Вы должны после сборки двух подписанных apks!

Когда вы распространяете в другие игровые магазины (samsung, amazon, xiaomi, ...), вам снова нужно будет собрать два подписанных apk.

Так что будьте очень осторожны с подпиской Google Play App Signing.

Отменить его невозможно : / и Google Play не принял apks, подписанные с помощью производственного ключа. После включения подписи приложений Google Play принимается только ключ загрузки ...

Это действительно усложняет распределение CI ...

Следующие проблемы с обновлением: https://issuetracker.google.com/issues/69285256

мтракал
источник
1
DON'T USEКомментарии, написанные жирным заглавным шрифтом, опасны. Можете ли вы подробно объяснить проблему и рекомендуемое решение? Нет ли решения вообще? Неужели так сложно дважды подписать APK для Fabric?
Гохан Арик
1
Не так сложно подписать APK дважды, но, как я описываю, вы должны создать два (или более) APK, которые не идентичны (так что вы тестируете файл Fabric Beta, отличный от того, который будет опубликован в Play Store). Это потеряно для тестирования производственной сборки на бета-тестерах ... вы тестируете другой файл :). Это просто предупреждение для людей, у которых есть сложный CI / CD, что они должны поменять его ...
mtrakal
2
Обратите внимание, что Google Play теперь принимает APK-файлы, подписанные с помощью рабочего ключа, даже после регистрации в программе подписания приложений.
Pierre
2

Сделайте следующее:

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button
Стерлинг Диас
источник
Могу ли я после этого тестировать сервисы покупки приложений и играть, как раньше? Был ли у вас опыт по этому поводу? Потому что даже я не люблю делать тяжелые шаги.
Сиддхарт
1
Не совсем подходящий ответ на вопрос "Как включить подписку в Google Play» ...
Бен Мадсен
2
И что вы предлагаете в качестве подходящего способа сделать это?
Стерлинг Диас