Как подписать приложение android studio

Публикуем приложения в Google Play и зарабатываем миллионы

Итак, за 30 дней вы научились создавать собственные приложения. Пора поделиться ими со всем миром и получить заветный миллион на блюдечке с голубой каёмочкой.

Так как мы волнуемся, то потренируемся на кошках. Возьмем, например, пример из статьи Пишем справочник и попытаемся выложить его в Google Play. Если все получится, то дальше будет проще.

Прежде чем приступать к дальнейшим операциям, убедитесь, что у вас готовы собственные значки для приложений и название программы. Будет очень странно увидеть в магазине приложений программу со стандартным значком и названием «HelloWorld». А также проверьте все записи в файле манифеста.

Шаг первый. Он трудный самый

Любое приложение, выкладываемое в магазин, должно иметь подписанный сертификат. Сертификат позволяет идентифицировать вас как автора программы. И если кто-то попытается выложить программу с таким же именем как у вас, то ему будет отказано из-за конфликта имён. Под именем приложения имеется в виду полное название пакета.

Когда вы запускали свои приложения на эмуляторе или своём телефоне, то среда разработки автоматически подписывала программу отладочным сертификатом. Для распространения через магазин отладочный сертификат не подходит, и вам нужно подписать приложение своим уникальным сертификатом. Это бесплатно, без регистрации и смс.

Появится диалоговое окно мастера, которое необходимо заполнить данными.

В первом поле Key store path нужно выбрать папку через кнопку . и ввести имя для файла с хранилищем, которому будет присвоено расширение jks.

Далее вы вернётесь обратно и продолжаете заполнять поля. Поля Password и Confirm в объяснении не нуждаются.

Теперь создаёте ключ для приложения. В поле Alias (Псевдоним) вводите понятное вам и котам название ключа. Не обязательно создавать псевдоним для каждого приложения, можете использовать один псевдоним для своих приложений и отдельные псевдонимы для приложений под заказ.

Для ключа также нужно создать пароль и подтвердить его.

Ключ расчитан на 25 лет. Поле Validity (years) оставляем без изменений (если у вас нет весомых причин в обратном).

Напоследок заполняете данные о себе.

Заполнив поля, вы вернёмся к самому первому окну мастера.

Нажимаем на кнопку Next и в следующем окне вводим ещё один пароль для доступа к базе паролей.

Возможно, этого шага у вас не будет. Он может появиться, если вы отметили флажком опцию «Запомнить пароль». Подробностей не помню, разберётесь сами.

Нажав кнопку Show in Explorer, вы запустите Проводник на вашем компьютере с папкой, в которой находится подписанный файл.

Будьте аккуратны с созданным ключом. Именно он является гарантией, что новая версия программы написана вами. Поэтому, если вы потеряете созданный ключ, вам придется выкладывать программу под другим именем с новым ключом.

В студии предусмотрен режим автоматического создания подписанного приложения. Щёлкните правой кнопкой мыши на папке app и в контекстом меню выберите пункт Open Module Settings. Выберите раздел app в секции Modules. Выберите вкладку Signing. Нажимаете на кнопку с плюсиком и заполняете поля.

Переходите на вкладку Build Types и выбираете сборку release. В выпадающем списке Signing Config выбираете только что созданную конфигурацию. По умолчанию она имеет имя config.

Нажимаем OK для сохранения результатов.

v2 Full APK

В 2017 году Google немного изменила процесс подписания. Теперь существуют две схемы получения подписи APK: v1 JAR и v2 Full APK.

Подпись v1 (который существовал с самого начала) не защищает некоторые части APK, такие как метаданные ZIP. Верификатор APK должен обрабатывать множество ненадёжных структур данных, а затем отбрасывать данные, которые не подписаны, что предоставляет большой простор для атаки. Кроме того, верификатор APK должен распаковать все сжатые записи, что тратит много времени и памяти. Для решения проблем была разработана новая версия v2 Full APK, которую вы встретите при подписании вашего приложения.

Схема v2 работает в Android 7.0 Nougat (API 25). Схема обеспечивает более быструю установку приложения и хорошую защиту от несанкционированных изменений в APK. Содержимое APK хешируется и подписывается, затем полученный блок подписи APK вставляется в APK.

Новый формат обратно совместим, поэтому APK, подписанные новой схемой, могут быть установлены на более ранних устройствах (которые будут просто игнорировать новую подпись), если эти APK также подписаны схемой v1.

В старых приложениях я оставляю флажок у первой версии. Возможно, позже заставят переходить на вторую версию принудительно. Важно учитывать, что подписывать схемой v1 нужно до подписания схемой v2, поскольку APK не пройдёт проверку по схеме v2, если он будет подписан дополнительными сертификатами после подписания схемой v2.

Строго говоря, вы можете apk-файл выложить у себя на сайте, и все ваши посетители могут его скачать и установить на телефон. Но это как-то несолидно в наш век нанотехнологий. Поэтому переходим к следующему шагу.

Шаг второй. Надо, Федя, надо

Следующий шаг очень неприятный. Вам нужно подарить 25 вечнозеленых чужому человеку. Чтобы вам было не так обидно, данную операцию назвали регистрационным взносом. Вам понадобится кредитная карточка с указанной суммой. Учтите, что Visa Electron, а уж тем более дисконтная карточка сети магазинов «Перекресток» вам не подойдут. Если у вас уже есть нужная карточка, то пропускаете этот абзац. Остальным могу посоветовать завести QIWI-кошелёк и там завести виртуальную карточку. Именно так я и поступил, так как идти в банк и писать всякие заявления было неохота.

Читайте также:  Что такое передаточное число передачи

Идём на страницу разработчиков, заполняем необходимые поля и расстаёмся с нужной суммой. Если операция пройдёт успешно, то вы сможете продвинуться дальше. В моем случае мне дважды отказывали, так как я пожадничал и положил на карточку меньшую сумму, чем требовалось (не учёл комиссию). Если вы позже доложили необходимую сумму, то не ждите, что её автоматически у вас спишут. Снова зайдите на страницу разработчика и отредактируйте данные о карточке (нужно еще раз написать код безопасности).



Шаг третий. Со счастливым концом

Если платёж прошел успешно, то ссылка на следующий шаг будет доступна и вы попадаете в специальный личный кабинет, где можете добавлять свои приложения.

Весь интерфейс на русском. Поэтому трудностей у вас не возникнет. Заливаем подготовленный APK-файл, а также необходимые картинки-скриншоты и значок.

Для своего первого приложения я не стал заморачиваться, а сделал всё на скорую руку.



В процессе добавления программы вы можете удалять картинки и файл приложения, снова их заливать и снова удалять. Иногда можно нажимать на кнопку Сохранить. Если вы сделаете что-то не так, то на странице появятся предупреждающие надписи. Если таких надписей нет, то можете смело нажимать на кнопку Публиковать. Всё! Ваше приложение доступно всему миру. За вами уже выехали.

Недавно в Google Play Developer Console добавили возможность тестирования приложений среди определённых пользователей. Если раньше вы загружали своё приложение и оно сразу становилось доступным всем, то теперь добавлены два промежуточных шага.

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

Если вы загрузите приложение в раздел Альфа-тестирования, то потом можете перевести его в бета-тестирование или сразу в Рабочую версию. Соответственно, из бета-тестирования можно перевести сразу в Рабочую версию. Обратно нельзя.

Если программа находится в стадии тестирования, то оно доступно только тестерам, другие пользователь не смогут найти вашу программу ни через поиск, ни по прямой ссылке.

Вам следует создать специальное сообщество в Google+ (указывается в настройках приложения) и пригласить туда нужных людей. Доверенные лица смогут затем перейти по ссылке play.google.com/apps/testing/com.yourdomain.package.

Ищет милиция, ищут пожарные

И вы сразу окажетесь в нужном месте и можете раздать ссылку своим друзьям. В последнее время добавление/обновление программы происходит достаточно медленно. Поэтому не стоит сразу искать свою программу, подождите пару часов.

Где деньги, Зин

Какой вы быстрый, однако. Есть два способа зарабатывания денег на своем приложении. Либо надо зарегистрироваться как продавец, либо как участник рекламной сети AdMob.

Открыть страницу приложения в Google Play

Учтите, что на эмуляторе код не сработает, так как в нём нет приложения Google Play. А пока можете зайти через телефон по указанному адресу и поблагодарить меня. Коты вам скажут Спасибо!.

Продвижение

На странице https://play.google.com/intl/ru_ru/badges/ на вкладке Badge Generator вы можете указать необходимые параметры, формирующие код для кнопки-баннера, который затем можете использовать в своём блоге или других местах. Например, так:

Автоматическое обновление

Если вы создали новую версию программы, исправив различные баги и добавив новые фотографии кота, то вам нужно в манифесте увеличить на единицу номер версии (атрибут versionCode) и заменить versionName для себя (будет показана на странице Google Play). В последних версиях студии данные свойства находятся теперь не в манифесте, а в файле build.gradle модуля вашего приложения. Закачайте новую версию на Google Play и пользователи получат обновление в автоматическом режиме.

Следим за отзывами

Установите на своём устройстве приложение Google Play Developer Console, чтобы не пропустить новый отзыв на вашу программу. Также вы можете просматривать статистику.

Меняем пароли хранилища и псевдонима ключа

Не пришлось пользоваться за несколько лет, поэтому не знаю, актуальна ли данная информация.

Допустим, вы продали свою программу с исходниками другой компании. Чтобы она могла выкладывать обновления программы, компания должна подписывать приложение тем же ключом, которым подписывали вы. Иначе программа будет считаться другой и придётся менять название пакета. Но тогда старые пользователи не смогут получить обновления.

Но если вы все свои программы подписываете одним и тем же ключом и паролем, например cat cat, то компания может подписать этим же ключом и другие ваши приложения, разместив свои программы с таким же именем пакета, и вы никому ничего не докажете.

Поэтому вам нужно позаботиться о смене ключа для передачи новому владельцу.

Предположим наше хранилище имеет структуру:

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

Сделайте копию вашего хранилища ещё раз и переименуйте его, например, new.keystore. С ним и будем работать.

Далее вам нужно изменить пароль хранилища, изменить псевдоним и изменить пароль псевдонима. Полученный файл передать новому владельцу.

Запускаем утилиту keytool с командой:

Вам будет предложено ввести текущий пароль, а затем ввести новый пароль и повторить его. Приблизительно так:

Первая часть задачи выполнена, пароль от хранилища изменён.

Если вы хотите также изменить и пароль от псевдонима, то снова запускаем утилиту с командой:

Читайте также:  Мне что балалайка что гусли

Вас попросят ввести текущий пароль от хранилища (ваш новый пароль), затем пароль для псевдонима. Вы можете ввести новый пароль и он заменит старый пароль.

Пароль от псевдонима изменён.

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

Вас попросят ввести пароль от хранилища, затем пароль для нового псевдонима (текущий пароль), затем новый пароль и повторить его. Имя псевдонима будет изменено.

Итак, нам понадобилось три шага, чтобы создать новое хранилище и псевдоним для передачи чужому человеку. Новый владелец должен проделать тоже самое, чтобы быть уверенным, что вы не воспользуетесь изменённым файлов в своих целях. Впрочем, это уже его проблемы.

Подписываем готовое приложение

Такой случай может подвернуться, когда у вас утеряны исходники и есть только APK. Скорее всего это актуально для пиратов, которые переподписывают другие приложения (не делайте так с чужими программами).

Сначала поменяйте расширение с apk на zip. В архиве удалите папку META-INF. Восстановите расширение. Вы удалили старую подпись.

Теперь нужно подписать приложение новым ключом. Введите команду.

В успешном случае получите сообщение, что приложение подписано. Далее выполняем ещё одну команду.

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

Хранение ключей у Гугла

В 2017 году Google добавил новую возможность хранить ключи в облачном хранилише. Основное отличие заключается в том, что вы подписываете приложение специальным ключом загрузки, который Google проверяет и удаляет, заменяя его оригинальным ключом подписи приложения, который вы предоставили.

С его помощью можно управлять ключами подписи приложений как для новых, так и для опубликованных приложений, которые будут храниться у Google в их собственном хранилище ключей. Чтобы присоединиться к этой программе, необходимо подписаться на неё в своей Google Play Console. Стоит отметить, что отписаться от неё уже будет невозможно.

App Bundle

Новый формат (доступен в Android 3.2 и выше) позволяет пользователю скачать специальную версию вашего приложения, которые содержит только нужный язык (value-en/strings.xml), картинку нужного разрешения (xxhdpi) и другие специфичные ресурсы. В результате итоговое приложение получается гораздо меньше по размеру.

Новый формат App Bundle имеет расширение .aab (Android App Bundle). Файл с этим расширением вы загружаете в Play Store вместо apk-файла. На основе вашего файла магазин приложений создаст различные варианты вашего приложения (apk).

Просмотреть структуру App Bundle можно через меню Build | Build Bundle(s)/APK(s) | Build Bundle(s). Сначала студия покажет всплывающее окно с указанием местоположения созданного файла.

Переходим по ссылке locate и видим наш файл app-debug.aab. Путь к файлу может быть таким: ..\YourApp\app\build\outputs\bundle\debug. Файл является стандартным zip-файлом, который можно посмотреть через любой подходящий архиватор.

Архив состоит из папок base, BUNDLE_METADATA и файла BundleConfig.pb.

Также могут быть директории с дополнительными особенностями, в этом случае каждой из них присваивается специальное имя feature1, feature2 и др.

Теперь при загрузке приложения в Play Store вы выбираете не apk-файл, а созданный aab-файл. После этого вы можете посмотреть, какую выгоду получит пользователь при загрузке своего варианта.

Если вам интересно посмотреть, как генеруются отдельные apk-файлы на основе App Bundle, то можете установить утилиту командной строки Bundletool.

Дополнительное чтение

Источник

Создание подписи приложения с помощью Google Play App Signing

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

Недавно Google добавил новую возможность хранить ключи: в своей собственной инфраструктуре благодаря Google Play App Signing. Основное отличие здесь заключается в том, что вы подписываете приложение специальным ключом загрузки, который Google проверяет и удаляет, заменяя его оригинальным ключом подписи приложения, который вы предоставили.

С его помощью можно управлять ключами подписи приложений как для новых, так и для опубликованных приложений, которые в свою очередь будут храниться у Google в их собственном хранилище ключей. Чтобы присоединиться к этой программе, необходимо подписаться на неё в своей Google Play Console. Стоит отметить, что в последствии отписаться от неё уже будет невозможно.

Таким образом, при подключении к Google Play App Signing происходит следующее:

Такой способ очень полезен, поскольку в случае, если вы потеряли хранилище ключей, Google Play App Signing позволит сбросить ключ для установки нового. Согласитесь, это намного проще, чем каждый раз публиковать приложение заново с новым именем пакета и ключом.

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

Для начала необходимо создать ключ загрузки, по которому Google будет проверять APK. Для этого средствами Android Studio через меню Build — Generate Signed APK создадим новое хранилище ключей, в котором будет содержаться наш ключ загрузки. Создание подписи приложения будет происходить с помощью Gradle, а файл, содержащий путь до хранилища и пароли, вынесем из проекта и будем хранить отдельно.

О том, как это можно сделать для своего приложения, можно почитать в данной статье.

Теперь перейдём в консоль разработчика. Создадим новое приложение и дадим ему название. После этого нужно перейти в «Версии приложения» — «Управление рабочей версией» — «Создать выпуск«. Здесь вам будет предложено подключиться к програме Google Play App Signing, нажимаем «Продолжить«.

Читайте также:  Матрица va монитор что это

Если перейти в «Подписи приложения«, то можно обнаружить, что был создан сертификат для подписи, однако сертификат загрузки остался пустым. Это потому, что мы ещё не загрузили первый подписанный APK файл.

Вернёмся в создание выпуска. После получения подтверждения о том, что мы подключились к программе, можно перейти к загрузке APK.

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

После того, как вы загрузите APK, подписанный ключом загрузки, его сертификат появится в «Подписи приложения«.

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

Узнать, что приложение подписано Google, а не самим разработчиком, можно по следующему элементу метаданных, содержащемуся в тэге в файле манифеста:

Как сбросить ключ загрузки?

В случае, если вы потеряли свой ключ загрузки или он был похищен кем-либо, вы можете сбросить его в консоли разработчика. Чтобы сделать это, нужно:

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

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

Данный идентификатор будет использоваться в инструментах отчётности об ошибках и по нему можно определить нужный APK-файл.

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

Кроме декомпилятора это также можно проверить утилитой aapt.exe (Android Asset Packaging Tool), которая входит в состав Android SDK. Для этого нужно ввести следующую команду:

Как подписаться, если приложение уже опубликовано?

В случае, если вы хотите подписать своё опубликованное приложение на Google Play App Signing, то вам нужно будет в консоли разработчика открыть проект приложения и затем выбрать «Управление релизом» — «Версии приложения«.

В открывшемся окне помимо различный вариантов сборок и версий вашего приложения должно появиться приглашение подключиться к Google Play App Signing.

Вам перекинет на страницу «Подписи приложений» с описанием программы. Вам нужно будет оттуда скачать утилиту PEPK и с помощью неё выполнить следующую команду, заменив выделенные участки на свои:

Эта утилита позволяет вам извлечь определённый ключ из хранилища ключей и экспортировать его в PEM сертификат. Для примера попробуем экспортировать ключ для другого приложения. После ввода команды нас попросят ввести пароли от хранилища и от ключа, и если всё завершится без ошибок, значит операция выполнена успешно.

Если PEPK выдаёт ошибку на неправильный alias, хотя вы полностью уверены, что он верен — попробуйте написать его только маленькими буквами, если в нём имеются заглавные.

Затем на той же странице в консоли разработчика нужно нажать на «Закрытый ключ для подписи приложения» и выбрать наш созданный сертификат. Таким образом Google поймёт, что именно мы являемся разработчиком приложения. После этого можно приступать к созданию ключа загрузки, по которому в будущем будет происходить публикация всех APK-файлов.

Для этого нужно создать ключ тем же способом, каким мы создавали его в начале статьи. Затем с помощью стандартной утилиты Java под названием Keytool нужно будет экспортировать ключ в PEM сертификат с помощью следующей команды:

На странице консоли разработчика нажимаем «Сертификат открытого ключа загрузки» и выбираем созданный сертификат с ключом загрузки.

После проделанных операций у нас станет активна кнопка «Зарегистрировать», нажимаем её и, если нет никаких ошибок, Google Play App Signing будет подключён к вашему приложению и вы увидите отпечатки сертификата.

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

Новая технология от Google немного облегчила жизнь разработчикам, будем жать, когда она действительно облегчит выходной APK-файл.

Создание подписи приложения с помощью Google Play App Signing : 2 комментария

Почему-то обошли вниманием самое важное: как указать свой первый ключ загрузки. В документации написано что после нажатия на кнопку «продолжить» запускается некий Enrollment Process в котором можно скачать Play Encrypt Private Key tool, экспортировать ключ и загрузить этот ключ на сервер.

У меня оно просто сказало «Молодец, теперь будет использоваться GPAS» и не дает загружать никакие APK.

Ну и стоит написать что вернуться на обычный способ подписи можно только через удаление приложения и создание его заново.

Ситуация аналогична с Константином, читал пост с надеждой найти ответ.

Источник

Познавательно-развлекательный портал