Как подписать release apk через консоль. [Инструкция]


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

ГЕНЕРАЦИЯ КЛЮЧА

Создавать ключ можно с помощью командной строки: 
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". 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.

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