как сделать подпись приложения android
Подписывание пакета приложения для Android
В разделе Подготовка приложения к выпуску для сборки и архивации приложения для последующего подписывания и публикации использовался Диспетчер архивов. Из этого раздела вы узнаете, как создать удостоверение подписывания Android, как создать новый сертификат подписи для приложений Android и как опубликовать заархивированное приложение напрямую на диск. Полученный неопубликованный APK-файл можно установить на устройства с Android, минуя магазин приложений.
В разделе Архивирование для публикации в диалоговом окне Канал распространения предлагается два варианта распространения. Выберите Прямое:
В разделе Архивирование для публикации в диалоговом окне Подписать и распространить. предлагается два варианта распространения. Выберите Прямое и нажмите Далее:
Создание нового сертификата
Можно использовать существующий сертификат, нажав кнопку Импорт, и затем продолжив с пункта Подписывание пакета APK. Если у вас еще нет сертификата, нажмите кнопку + для создания нового сертификата:
Появится диалоговое окно Создание хранилища ключей Android. Создайте при помощи этого окна новый сертификат подписи, который затем можно будет использовать для подписывания приложений Android. Введите необходимые сведения в этом диалоговом окне (выделено красным), как это показано на рисунке:
На следующем рисунке приведен пример сведений, которые необходимо ввести в этом окне. Нажмите Создать для создания нового сертификата:
Полученное хранилище ключей находится в следующем расположении:
C:\Users\Имя_пользователя\AppData\Local\Xamarin\Mono for Android\Keystore\Псевдоним\Псевдоним.keystore
Например, при использовании chimp в качестве псевдонима вышеуказанные шаги создадут ключ подписи в следующем расположении:
C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Local\Xamarin\Mono for Android\Keystore\chimp\chimp.keystore
Папка AppData по умолчанию скрыта, и для доступа к ней вам, возможно, потребуется отобразить ее.
Кроме того, обязательно сохраните резервную копию файла полученного хранилища ключей и пароль в безопасном месте (оно не указано в этом руководстве). Если вы потеряете ваш файл хранилища ключей (например, если вы сменили компьютер или переустановили Windows), то вы не сможете подписать приложение тем же сертификатом, что и предыдущие версии.
Подробные сведения о хранилище сертификата см. в разделе Отображение MD5 и SHA1 сигнатур хранилища ключей.
Диалоговое окно Создание нового сертификата используется для создания нового сертификата подписи, который можно использовать для подписания приложений Android. После ввода всех необходимых сведений нажмите кнопку OK:
Полученное хранилище ключей находится в следующем расположении:
Например, вышеуказанные шаги создадут новый ключ подписи в следующем расположении:
Обязательно сохраните резервную копию файла полученного хранилища ключей и пароль в безопасном месте – оно не указано в этом руководстве. Если вы потеряете файл хранилища ключей (например, сменили компьютер или переустановили macOS), вы не сможете подписать приложение тем же сертификатом, что и предыдущие версии.
Подробные сведения о хранилище сертификата см. в разделе Отображение MD5 и SHA1 сигнатур хранилища ключей.
Подписывание пакета APK
При нажатии кнопки Создать новое хранилище ключей (содержащее новый сертификат) будет сохранено и отобразится в списке Удостоверение подписывания, как это показано на следующем рисунке. Для публикации приложения в Google Play нажмите Отмена и перейдите к разделу Публикация в Google Play. Для публикации напрямую выберите удостоверение подписывания и нажмите Сохранить как, чтобы опубликовать приложение для независимого распространения. Например, на приведенном ниже рисунке выбрано созданное ранее удостоверение подписывания chimp:
Перейдите в желаемое расположение для сохранения и нажмите Сохранить. Если неизвестен пароль ключа, откроется диалоговое окно Пароль для подписывания для ввода пароля выбранного сертификата:
После подписания файла щелкните Открытое распространение:
В результате проводник Windows откроет папку, содержащую сформированный APK-файл. На этом этапе Visual Studio завершает компиляцию приложения Xamarin.Android в APK-файл, готовый к распространению. На рисунке ниже изображен пример готового к публикации приложения MyApp.MyApp.apk:
Как мы видим, новый сертификат был добавлен в хранилище ключей. Для публикации приложения в Google Play нажмите Отмена и перейдите к разделу Публикация в Google Play. В противоположном случае нажмите Далее для публикации приложения напрямую (для независимого распространения), как это показано в следующем примере:
Диалоговое окно Опубликовать напрямую перед публикацией отображает сводку по подписанному приложению. Проверьте правильность следующих сведений и нажмите Опубликовать.
С помощью диалогового окна Выходной APK-файл укажите путь для сохранения файла. Нажмите кнопку Сохранить.
Затем введите пароль сертификата (пароль, который был указан в диалоговом окне Создание нового сертификата) и нажмите OK:
APK-файл подписан сертификатом и сохранен по указанному пути. Нажмите Показать в Finder:
В результате откроется Finder с расположением подписанного APK-файла:
APK-файл готов к копированию из Finder в место назначения. Перед распространением рекомендуется установить APK-файл на устройство с Android и проверить работоспособность приложения. Дополнительные сведения о прямой публикации APK-файлов см. в разделе Независимая публикация.
Следующие шаги
После подписывания пакета приложения для выпуска его необходимо опубликовать. Следующие разделы описывают несколько способов публикации приложения.
Создание подписи приложения с помощью 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, нажимаем «Продолжить«.
Если перейти в «Подписи приложения«, то можно обнаружить, что был создан сертификат для подписи, однако сертификат загрузки остался пустым. Это потому, что мы ещё не загрузили первый подписанный 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.
Ну и стоит написать что вернуться на обычный способ подписи можно только через удаление приложения и создание его заново.
Ситуация аналогична с Константином, читал пост с надеждой найти ответ.
Создание подписанного приложения для android. Generate Signed APK.
В этой статье давайте подпишем созданное нами ранее приложение для Android, если мы запустим его в эмуляторе, то через некоторое время наше предложение запустится, и с ним можно с ним поработать на компьютере. Но давайте всё-таки узнаем, как подписать приложение андроид, подготовим его для отправки и установки на телефон.
Настройка сертификата
Придумайте и напишите какой-нибудь замысловатой пароль, его нужно будет подтвердить в поле Confirm.
В сертификате первое и последнее имя я напишу название сайта, вы же можете указать свою информацию. Дальнейшие поля хотите заполнять, хотите нет, пока от Вас этого никто не требует. Нажмите ОК.
Поставим галочку запомнить пароли. Нажмем Next. В поле, тип создания должен быть релиз., тип сертификата V2(полная подпись приложения). Нажмите готово. Android Studio поможет Вам подписать apk.
Apk в папке проекта
Внизу справа в Android Studio появится всплывающее сообщение, об успешном создании файла, нажав на ссылки в сообщении можно открыть окно с папкой проекта, и наше подписанное приложение будет находиться в папке release(релиз). Имя файла app-realease.apk.
Установка приложения
Давайте Drag-and-Drop-om, перетянет его на экран эмулятора, оно установится, уже минуя, так сказать среду Android Studio.
Запустим его, и, как видим наше приложение будет работать, таким образом Вы можете перекинуть его на флешку, с помощью OTG кабеля установить на телефон, либо через USB-шнур, перебросить его, и дальше уже тестировать на реальном устройстве, смартфоне или планшете.
Смотрите видео Создание подписанного приложения для android. Generate Signed APK:
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
Ответы на распространенные вопросы о подписании приложений в Google Play
Приложения для Android имеют криптографическую подпись разработчика. С ее помощью менеджер пакетов на устройстве пользователя может проверить, что каждое обновление приложения происходит из одного и того же источника, и что оно не было подделано. Google Play также применяет эту проверку подписи, когда вы загружаете свой APK-файл на консоль Google Play, так что даже если бы у кого-то были ваши учетные данные для входа, было бы невозможно отправить вредоносное обновление, не имея также доступа к вашему закрытому ключу.
Исторически сложилось так, что разработчики отвечали за создание своих собственных закрытых ключей и сохраняли их в безопасности на протяжении всего срока службы приложения. И хотя такой подход предлагал большую гибкость, он также приводил к ошибкам: генерация слабых ключей, случайная проверка вашего закрытого ключа в публичном репозитории или даже полная его потеря — это всего лишь несколько распространенных ошибок, которые регулярно происходят даже с опытными разработчиками.
В настоящее время у разработчиков есть привлекательная альтернатива для управления ключами самостоятельно: подписание приложения на Google Play, где ключ загрузки (тот, который вы используете, чтобы загрузить свои артефакты в Google Play) и ключ для подписи приложения (который используется для подписи APK-файлов, распространяющихся на устройства) могут быть разными, и второй ключ хранится на Google инфраструктуре.
Несмотря на то, что многие другие популярные платформы используют такой способ распределения ключей, для многих разработчиков это отход от предыдущей модели подписи Android, и некоторые из них могут подумать, что они теряют контроль над своими приложениями.
Вот почему я хочу развеять некоторые распространенные заблуждения относительно подписи приложений в Google Play, а также дать рекомендации по конкретным сценариям, с которыми вы можете столкнуться.
Этот совет основан на вопросах, которые наша команда по связям с разработчиками слышала на конференциях, в онлайн-форумах и наших чатах 1:1.
Давайте начнем с самой убедительной причины для перехода на подписание приложений с помощью Google Play:
Без подписи приложения в Google Play: благодаря защите безопасности, встроенной в Android, без ключа вы или Google ничего не можете сделать для продолжения обновления вашего приложения. Ваш единственный вариант — это создать новый список с новым именем пакета и начать с нуля.
С подписью приложения в Google Play: вы можете запросить новый ключ загрузки. Play сможет продолжать подписывать обновления вашего приложения с помощью ключа подписи приложения, который надежно хранится в Google.
Если бы я назвал одну причину, которая говорит за принятие подписи приложения, то это была бы та, что выше. Но прежде чем мы пойдем дальше и поговорим о конкретных сценариях, которые этот метод может помочь исправить (есть и другие!), давайте сначала сделаем паузу, чтобы ответить на мета-вопрос:
Первым приоритетом Google Play является создание безопасной и надежной платформы для миллиардов пользователей и миллионов разработчиков.
От этого зависит устойчивость и успех экосистемы. Большинство разработчиков не могут обеспечить тот уровень безопасности, который может предложить Google.
Новая модель приложения, где Play поглощает артефакты публикации и генерирует подписанные, предназначена для минимизации шанса того, что ключи подписи будут раскрыты. Она не только безопасна, но и более эффективна, а также ориентирована на будущее с выгодой как для конечных пользователей, так и для разработчиков.
Например, ряд приложений, находящихся в настоящее время в Play Store, до сих пор не приняли более безопасную схему подписи v2. После регистрации в приложении подписи от Google Play приложения автоматически получают преимущества новых механизмов защиты и будущих улучшений, без необходимости работы разработчика.
И наконец, разделение формата публикации (с использованием пакетов приложений для Android) и формата обслуживания (разделенные APK) открывает преимущества как для разработчиков, так и для пользователей: от повышения безопасности до оптимизации, снижения сложности и фрагментации. Однако для этого Play должен иметь возможность подписывать обслуживающие артефакты.
Некоторые примеры функций, доступных прямо сейчас, — это автоматическая оптимизация размера для доставки приложений, а также новые настраиваемые параметры доставки модулей в вашем приложении.
Что еще более важно, такой подход дает нам возможность развивать и совершенствовать механизмы доставки в будущем, обеспечивая при этом доверие и безопасность распределяемых артефактов.
Несмотря на то, что мы продолжаем совершенствовать наш стек обслуживания, мы не изменяем и не распространяем код вашего приложения без вашего ведома и одобрения, и новые оптимизации, которые выполняет Play, доступны для вашего контроля в bundletool с открытым исходным кодом. Далее в этом часто FAQ мы обсудим некоторые метаданные (те, которые не влияют на работу вашего приложения), которые вы можете увидеть между артефактами, загруженными из Play и созданными локально.
Без подписи приложения в Google Play: как уже упоминалось ранее, вы не можете просто переключиться на новый ключ, так как это будет означать, что ваши существующие пользователи не смогут получать обновления приложений. Вы должны либо продолжать использовать существующий ключ и рисковать безопасностью данных ваших пользователей, либо начать новую запись приложения с нуля.
С подписью приложения в Google Play: если вы используете слабый ключ или ваш ключ был скомпрометирован, вы можете обновить его для новых установок.
Это осуществляется путем доставки APK, подписанных вашим устаревшим ключом, существующим пользователям, когда они обновляют приложение, в то время как новые установки приложений получают APK, подписанные обновленным безопасным ключом.
Рассмотрите включение подписи приложения сейчас и как можно скорее переключитесь на использование отдельного ключа загрузки, что снизит вероятность компрометирования ключа подписи приложения.
Текущий процесс обновления до нового ключа не является мгновенным, и если ключ подписи приложения утечет, ваши существующие пользователи будут подвергаться риску до тех пор, пока они не переустановят приложение или не перейдут на новое устройство.
Обратите внимание, что текущий процесс обновления ключа не использует преимущества функции ротации ключа, введенной в Android 9 (Pie) и выше. В настоящее время мы изучаем поддержку ротации ключей с помощью подписи приложения версии 3 для устройств на этих версиях ОС и сообщим об этом сообществу разработчиков, как только оно будет готово, в отдельном объявлении.
Без подписи приложения в Google Play: нет никакой концепции отдельного “ключа загрузки”, поэтому, если ваш ключ подписи выпуска утечет, вы можете оказаться в большой беде: кто-то может создать вредоносные или несанкционированные версии вашего приложения, которые будут неразличимы (и обновляемы!) от вашего оригинального APK.
Конечно, защита учетной записи Google применяется к доступу к консоли Google Play (и мы рекомендуем разработчикам включить 2-ступенчатую проверку), поэтому злоумышленнику все равно придется найти способ обмануть пользователя, чтобы он загрузил такой измененный APK. Тем не менее безопасность вашего приложения ослаблена.
Обратитесь к вопросу 3 о скомпрометированном ключе подписи приложения, чтобы узнать, какие исправления доступны, а также как обновить ключ для новых установок.
С подписью приложения в Google Play: если ваш ключ загрузки отделен от ключа подписи приложения (рекомендованный вариант), и просочился только первый, то данные ваших пользователей будут в безопасности — одного ключа загрузки недостаточно, чтобы подменить APK, подписанные ключом подписи приложения. Просто запросите новый ключ загрузки.
Если вы продолжили использовать ключ подписи приложения для загрузки в Play, когда вы впервые включили подпись приложения, и он просочился, вы находитесь в немного худшей ситуации, но подпись приложения все еще может исправить эту проблему. Следуйте советам о том, как обновить свой ключ для новых установок.
Вы или кто-либо другой в вашей учетной записи разработчика не может загрузить и сохранить закрытый ключ для вашего приложения, хранящегося в защищенной инфраструктуре Google. Это делается для обеспечения защиты ключа подписи вашего приложения.
Если вы предвидите ситуацию, в которой вам потребуется постоянный доступ к ключу подписи вашего приложения, вам следует сделать следующее при включении подписи приложения:
· Не выбирайте опцию, в которой Google Play создает ключ подписи приложения за вас. Вместо этого создайте свой ключ подписи локально на вашем компьютере.
· Надежно перенесите свой ключ в Google Play и не удаляйте его с вашего компьютера.
· Храните ключ в надежном месте, чтобы он не просочился к третьим лицам.
· Убедитесь, что вы регулярно создаете и тестируете резервные копии своего ключа, так как в случае его потери вы не сможете загрузить его из Google.
Эти шаги описаны в документации. В инструкции о том, как ”выбрать существующее приложение”, показано, как зашифровать свой ключ подписи, чтобы загрузить его на консоль Google Play из Android Studio или командной строки.
Если вы абсолютно уверены, что вам не понадобится постоянный доступ к ключу подписи вашего личного приложения, мы рекомендуем вам либо разрешить Play генерировать ваш ключ (для новых приложений), либо удалить свою копию после передачи ее в Play и переключиться на использование ключа загрузки.
Ключ загрузки может быть сброшен, и это не ставит под угрозу безопасность ваших пользователей в случае утечки информации.
Если вы включаете подпись приложения для нового приложения и выбираете опцию создания нового ключа в консоли Google Play, ключ никогда не передается и генерируется непосредственно на защищенном сервере Google.
Если вам нужно передать существующий ключ подписи (необязательно для новых приложений и обязательно для существующих приложений), вы всегда делаете это в зашифрованном виде. Независимо от того, экспортируете ли вы ключ из Android Studio или из командной строки, вы будете использовать инструмент шифрования закрытого ключа Play (PEPK) локально на вашем компьютере перед передачей ключа.
В случае, если вам нужно знать детали используемого шифрования, PEPK использует асимметричное шифрование эллиптической кривой P256 с симметричным шифрованием AES. Если вам нужно получить более подробную информацию, вы можете загрузить инструмент PEPK и его исходный код во время процесса регистрации подписи приложения.
Не стесняйтесь просматривать или компилировать его самостоятельно, чтобы он мог быть запущен в вашей собственной безопасной среде, гарантируя, что незашифрованный ключ никогда не будет раскрыт.
Используйте только версии PEPK, загруженные с консоли Google Play, никогда не загружайте его или его источник с непроверенных сторонних веб-сайтов.
Когда вы используете подпись приложения в Google Play, ваши ключи хранятся в той же инфраструктуре, где и Google хранит свои собственные.
Доступ к ключам регулируется строгими ACL и аудиторскими следами с защитой от несанкционированного доступа для всех операций.
Все артефакты, созданные и подписанные ключом разработчика, становятся доступными в консоли Google Play для проверки/аттестации.
Кроме того, чтобы предотвратить потерю ключей, мы очень часто делаем резервные копии нашего основного хранилища. Эти резервные копии строго зашифрованы, и мы регулярно тестируем восстановление из этих резервных копий.
Если вы хотите узнать о технической инфраструктуре Google, ознакомьтесь с информационными документами Google Cloud Security.
Если вы хотите использовать сервисы или API, которые требуют регистрации с хэшем публичного сертификата вашего приложения, вы можете просмотреть или загрузить “отпечатки пальцев” публичного сертификата из раздела “App signing“ консоли Google Play:
Не забывайте всегда использовать эти отпечатки пальцев при включении сервисов для выпускных версий вашего приложения, а не для тех, которые получены из вашего ключа загрузки.
Большинство сервисов позволяют включить несколько сертификатов для приложения, поэтому вы можете продолжить тестирование с локально построенными APK, а также APK, генерируемыми Google Play.
Как уже говорилось ранее, Play не будет изменять функциональность вашего приложения без вашего ведома и одобрения. Однако он вставляет небольшое количество метаданных, которые помогают проверить источник и целостность распространения. Эти метаданные бывают двух видов:
• Для всех приложений, загруженных в Google Play, Play добавлял метаданные безопасности после блока подписи, чтобы включить такие функции, как авторизованный обмен приложениями P2P. Мы объявили об этом первоначально в своем блоге в 2017 году.
• Для приложений, загруженных в виде пакетов приложений, мы улучшим безопасность, введя так называемый штамп источника. Эти исходные метаданные вставляются в манифест приложения с помощью bundletool. Когда APK генерируется на сервере Play, он также подписывается с помощью ключа Google в дополнение к вашему ключу подписи приложения.
Это означает, что метаданные безопасности не могут быть удалены или изменены без аннулирования подписи Google. Такой подход дает сигнал высокой уверенности в том, что немодифицированные АПК, содержащие исходный штамп, пришли из Google Play.
Вы можете локально использовать bundletool с открытым исходным кодом для генерации APK из пакетов точно так же, как это делает Play на сервере. Метаданные исходного штампа, добавленные bundletool, не будут подписаны ключом Google. Другие исходные подписи будут возможны, когда ApkSigner будет обновлен со следующим выпуском Android.
Есть несколько вариантов, доступных для вас:
• В целях тестирования вы можете использовать внутреннюю ссылку на общий доступ к приложению для любой исторической версии вашего приложения из проводника пакетов приложений консоли Google Play. Нажатие на ссылку на устройстве приведет к установке APK, которые Play Store установит в prod для этого устройства.
• Вы также можете загрузить подписанные APK-файлы для конкретных устройств из проводника пакетов приложений консоли Google Play.
Приложения можно распространять несколькими способами и по разным каналам. Есть несколько соображений, которые вы должны иметь в виду, в зависимости от того, является ли это приложение новым или существующим.
Для новых приложений вы можете использовать отдельные ключи подписи для каждого канала распространения, а Google будет генерировать ключ, используемый Google Play для вас. Это самый безопасный способ для приложений, распространяемых в Play, так как ключ никогда не покидает серверы Google, что сводит вероятность того, что кто-то перехватит ключ, почти к нулю.
Кроме того, для тех, кто не хочет управлять несколькими ключами, но все еще использует преимущества безопасности подписи приложений в Google Play, мы скоро предоставим возможность загружать подписанные универсальные APK из проводника пакетов приложений и распространять их в других магазинах.
Для существующих приложений: если вы уже используете один ключ для разных магазинов, при желании вы можете продолжать это делать. При включении входа в приложение в Google Play вам будет предложено загрузить существующий ключ.
При необходимости вы можете рассмотреть функцию обновления ключа, упомянутую ранее, чтобы со временем отказаться от совместного использования ключа, используемого Google Play, с другими каналами распространения.
Есть одно предостережение, которое приходит вместе с вышеприведенным советом: пожалуйста, обратите внимание, что если вы решите использовать отдельные ключи подписи для разных магазинов, ваши пользователи не смогут перекрестно обновлять приложение между различными каналами распространения. Например, когда кто-то изначально установил приложение через другой магазин, а затем пытается обновить его через Play. Они должны будут удалить и установить приложение снова.
Нет, вы не должны делать все сразу.
Вы можете выбрать подписание приложений от Google Play и продолжить публикацию APK. Когда вы будете готовы, вы можете начать публиковать пакеты приложений для Android.
Публикация с помощью пакета приложений проста для систем сборки, которые поддерживают его, и автоматически предоставляет такие преимущества, как уменьшение размера, для большинства приложений.
Со временем вы можете воспользоваться преимуществами расширенных функций, таких как динамическая доставка. Вы также можете модулировать свое приложение с помощью динамических функциональных модулей, чтобы улучшить время сборки и воспользоваться преимуществами настраиваемой доставки. Play может использовать динамическую доставку для предоставления высококачественных активов во время или после установки с настраиваемыми режимами и интеллектуальными опциями таргетинга.
Если вы хотите начать использовать подпись приложений, но ваши менеджеры или команды по безопасности нуждаются в объяснении преимуществ и предостережений касательно подписи приложений, то покажите им эту статью.
Перевод: Лебедев Даниил.
Еще больше полезной и нужной информации вы найдете в нашем Телеграм-канале по ссылке: