Подписываем release apk через консоль

Разрабатывая на Cordova часто всё идёт не так: то плагин неправильно поставится, то конфиг слетит, а то и обновленный node.js законфликтует, и ничего, зараза, не хочет запускать. Но так или иначе, гибридная разработка уже нашла своих приверженцев и имеет достаточно плюсов, чтобы смириться с мелочами. Ниже расскажу как подписать APK релизным ключом для публикации в маркете.

Генерация ключа

Создать ключ с помощью командной строки можно следующей командой: 
keytool -genkey -v -keystore test_key.jks -alias release -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000
Или сделать гуишно:
  • Установить Android Studio
  • Создать в ней нативный тестовый проект
  • Перейти в закладку "Build / Generate Signed APK"
  • Нажать "Create new" 
  • Заполнить все поля и сгенерировать в "release"
Для примера я использую ключ с именем "test_key.jks"

Сохраните созданный файл ключа в надежном месте! 

Если вы его потеряете ключ к опубликованному приложению - обновление в маркете сделать не сможете.

Компиляция проекта

Если вы используете Ionic или чистейшую Cordova последовательность будет выглядеть так:
  • Добавляем платформу Android (если ещё не добавили)
  • Устанавливаем cordova плагины
  • cordova prepare
  • Инкрементируем версию проекта в config.xml в теге widget
  • cordova build android --release
  • Вместо test_key.jks набираем имя своего файла ключа, вместо android - имя alias
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore test_key.jks platforms/android/build/outputs/apk/android-release-unsigned.apk android
  • Вводим пароль, указанный при генерации ключа
  • Запаковываем в новый APK: 
zipalign -v 4 platforms/android/build/outputs/apk/android-release-unsigned.apk platforms/android/build/outputs/apk/test.apk

Настройка Google Play Developer Console

Тут всё делается относительно ваших текущих задач на основе многочисленных руководств. Вкратце, я рекомендую делать следующее:
  • Создать новое приложение в разделе "All Applications"
  • Перейти в APK и залить билд, например, в Alpha
Зайти в https://console.developers.google.com/project где создать новое приложение.
  • В разделе APIs & auth включить необходимые API 
Если используете Play Services включите следующие:
Google Play Game Management, Google Play Game Services, Google+ API.
  • Теперь перейти в https://play.google.com/apps/publish в раздел Game Services
  • Прикрепить созданную прежде игру
  • В разделе Linked apps создать ссылку на Android
  • В Package name выбрать ссылку на своё творение вида: com.company.app. Сохранить
  • Кликнуть на кнопку Authorize your app now
Если SHA1 автоматически записался - все хорошо. Иначе вы где-то накосячили и придется начинать заново.
  • Нажать Confirm и ждать
Если успешно сохранилось - значит все настройки правильны и можно ставить пакет на устройство. Если произошла какая-то ошибка, лучшее что я могу подсказать - это удалить проект полностью и начать с самого сначала :)

Не забывайте удалять приложения с обеих консолей google. Например у меня была ошибка "An unexpected error occurred. Please try again later. (4800004)", которая возникает, если приложение было удалено на console.developers.google.com, но почему-то осталось на play.google.com/apps/publish.

На этом всё. Тратье время на решение задач, а не на войну с конфигами.