Подписание APK

Сообщение Подписание APK
» 25 апр 2013, 08:29

Доброго времени суток, господа :bye:
Наверное каждый из нас когда-либо задумывался о том, как неплохо было бы запилить свою собственную игру на Андроид и опубликовать её в Google Play, срубить миллионы и уехать доживать свои дни куда-нибудь на острова с блэкджеком и ... :mocking:

Владельцы персональных/бизнес лицензий Construct 2 имеют возможность экспортировать свои проекты для компиляции через CocoonJS - бесплатный конвертер HTML5 -> APK (подробнее об этом можно прочитать в этой теме: http://c2community.ru/forum/viewtopic.php?f=4&t=444)

На выходе, после компиляции, к нам на почту приходит архив. в архиве содержаться 2 APK файла:

1) gamename_debug_signed.apk - файл подписаный стандартной отладочной лицензией, действующий ровно год (спустя год установить его на устройства не получится, но уже установленная до того момента игра работать все равно будет). Его можно устанавливать на свои аппараты, давать друзьям, раскидать по торрентам, но в Google Play опубликовать не получится.

2) gamename_release_unsigned.apk - это релизный, не подписанный файл для публикации в Google Play. Но без подписи оного, его нельзя ни установить, ни загрузить в маркет, ни похвастаться перед бабушкой.

1) ПО для работы:
Для процедуры подписи APK файла нам понадобится: ANDROID SDK, Java Development Kit и командная строка(консоль)

2) Подготовка:
Подготовим поле боя, дабы в дальнейшем не отвлекаться на мелочи и заниматься делом:

- Создайте папку Android в корневом каталоге диска С (C:\Android\)
- Поместите в эту папку ваш gamename_release_unsigned.apk
- Переименуйте его: gamename_release.akp (так будет проще и понятней)

3) Создание ключа для подписи:
Чтобы подписать приложение, для начала нам нужно создать собственно сам ключ, которым мы и будем его(приложение) подписывать. В этом нам поможет утилита keytool в составе пакета JDK.
Посему находим папку Java\jdkx.xx.xx\bin (по умолчанию находится в Program Files). Удерживая SHIFT, правой кнопкой мыши кликаем на папку BIN и выбераем "Открыть окно команд"

Командной строке вводим следующее(по аналогии, не в тупую):
keytool -genkey -v -keystore C:\Android\gamename.keystore -alias gamename -keyalg RSA -keysize 2048 -validity 10000 жмем Enter, вводим пароль, и свои данные по запросу.






 





Изображение




Чего это мы собствонно наделали? Мы создали уникальный ключ для подписи нашего приложения, длительностью на 25 лет(поправте, если ошибаюсь), который теперь находится в папке C:\Android\

4) Подписываем нашим ключем готовое приложение:

Итак, у нас есть Готовый ключ и в папке лежит готовое приложение, которое нужно им подписать. В этом нам поможет так же встроенная в JDK утилита jarsigner
В очередной раз(если вышли с консоли) зажав SHIFT, правой кнопкой мыши кликаем по папке BIN и вызываем консоль. Вводим команду jarsigner -verbose -keystore C:\Android\gamename.keystore C:\Android\gamename_release.apk gamename






 





Для JDK7
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore path.keystore patch.apk name









 





Изображение
Изображение



Если все прошло без ошибок - принимайте мои поздравления - приложение успешно подписано! Но Для загрузки в Google Play его нужно еще и выровнять.

5) Выравнивание вашего приложения:
Для сего действия нам понадобится Android SDK. А точнее утилита zipalign, идущая в его составе.
Находим папку: SDK\tools\(в новых версиях Android SDK файл zipalign может лежать в ином месте - ищите через поиск и дальнейшие действия совершайте с папкой в которой находится zipalign), с зажатым SHIFT кликаем по ней правой кнопкой мыши, чем вновь вызываем консоль.
Вводим команду: zipalign -v 4 C:\Android\gamename_release.apk C:\Android\gamename_release001.apk






 





Изображение
Изображение




Если все прошло без ошибок(сравнитесь со скриншотами), значит выравнивание протекло успешно и в папке C:\Android\ создано новое, выровненное приложение gamename_release001.apk, которое можно закидывать на Google Play. Но для начала нужно проверить, все ли прошло успешно.

6) Проверка вашего приложения:
Для проверки нам понадобится все та же утилита JDK - jarsigner в папке Java\jdkx.xx.xx\BIN
Вызываем консоль и вписываем команду: jarsigner -verify -verbose C:\Android\gamename_release001.apk , жмем ENTER и, если все хорошо, лицезреем:






 





Изображение
Изображение




Поздравляю! Можно отправлять прямиком в Google Play. :good2:






 





Изображение





Весь материал собран по кускам с кучи разных источников, так что это полу-перевод, полу-додумал сам, но в конечном итоге большую лепту внес stevo301103 с форума Scirra.com, за что ему большие спасибы :bye:
Последний раз редактировалось mef1sto 29 сен 2014, 06:59, всего редактировалось 6 раз(а).
Изображение
Аватара пользователя

Модератор
Сообщений: 2937
Я тут с 19 дек 2012, 09:41
Откуда: Новый Уренгой