Прежде чем добавлять в приложение проверку лицензии, необходимо настроить аккаунт разработчика Google Play, среду разработки и тестовые аккаунты, необходимые для проверки реализации.
Как настроить аккаунт издателя
Если у вас нет аккаунта издателя Google Play, зарегистрируйте его, используя свой аккаунт Google, и примите Условия использования Google Play.
Подробнее о начале работы с публикациями…
Если у вас уже есть аккаунт издателя в Google Play, настройте лицензирование в Play Console.
В Google Play Console вы можете:
- Получите открытый ключ для лицензирования приложения
- Отладка и тестирование лицензирования приложения перед его публикацией.
- Опубликуйте приложения, в которые вы добавили поддержку лицензирования.
Настройки администрирования для лицензирования
В Play Console можно управлять несколькими административными настройками для лицензирования Google Play. Вы можете:
- Настройте несколько тестовых аккаунтов, указав их адреса электронной почты. Сервер лицензирования позволяет пользователям, вошедшим в тестовые аккаунты на устройстве или в эмуляторе, отправлять запросы на проверку лицензии и получать статические тестовые ответы. Вы можете настроить аккаунты на странице "Сведения об аккаунте" в Play Console.
- Настройте статические тестовые ответы, которые сервер отправляет, когда получает запрос на проверку лицензии для приложения, загруженного в аккаунт издателя, от пользователя, вошедшего в аккаунт издателя или тестовый аккаунт. Вы можете настроить тестовые ответы на странице "Сведения об аккаунте" в Play Console.
- Получите открытый ключ приложения для лицензирования. При реализации лицензирования в приложении необходимо скопировать в него строку открытого ключа. Открытый ключ приложения для лицензирования можно получить на странице "Сервисы и API" (в разделе "Все приложения").
Рисунок 1. Лицензионный ключ приложения можно найти на странице "Сервисы и API " в Play Console.
Подробную информацию о работе с тестовыми аккаунтами и статическими тестовыми ответами можно найти в разделе Настройка тестовой среды.
Настройка среды разработки
Чтобы настроить среду для лицензирования, выполните следующие действия:
- Настройка среды выполнения для разработки.
- Как скачать библиотеку проверки лицензий (LVL) в SDK
- Настройка библиотеки проверки лицензий
- Как включить проект библиотеки LVL в приложение
Ниже описано, как это сделать. После этого можно добавить лицензирование в приложение.
Для начала необходимо настроить среду выполнения, в которой вы сможете запускать, отлаживать и тестировать реализацию проверки лицензий и принудительного применения в приложении.
Настройка среды выполнения
Как уже говорилось, приложения проверяют статус лицензии не напрямую на сервере лицензирования, а через сервис, предоставляемый приложением Google Play. Затем сервис Google Play напрямую связывается с сервером лицензирования и перенаправляет ответ в ваше приложение. Чтобы отладить и протестировать лицензирование в приложении, необходимо настроить среду выполнения, включающую нужный сервис Google Play. Это позволит приложению отправлять запросы на проверку лицензии на сервер лицензирования.
Вы можете использовать два типа среды выполнения:
- устройство Android с приложением Google Play;
- Эмулятор Android с дополнением API Google, уровень API 8 (выпуск 2) или выше.
Запуск на устройстве
Чтобы использовать устройство Android для отладки и тестирования лицензирования, оно должно:
- совместимая версия Android 1.5 или более поздняя (уровень API 3 или выше); и
- Запустите образ системы, в котором предустановлено клиентское приложение Google Play.
Если Google Play не предустановлен в образе системы, ваше приложение не сможет взаимодействовать с сервером лицензирования Google Play.
Общие сведения о том, как настроить устройство для использования при разработке приложений для Android, можно найти в статье Использование физических устройств.
Запуск в эмуляторе Android
Если у вас нет устройства, вы можете использовать эмулятор Android для отладки и тестирования лицензирования.
Поскольку платформы Android, предоставляемые в Android SDK, не включают Google Play, вам необходимо скачать платформу дополнений API Google (уровень API 8 или выше) из хранилища SDK. После скачивания дополнения необходимо создать конфигурацию AVD, которая использует этот образ системы.
Дополнение API Google не включает полный клиент Google Play. Однако в нем есть:
- Фоновая служба Google Play, которая реализует удаленный интерфейс
ILicensingService, чтобы ваше приложение могло отправлять запросы на проверку лицензии по сети на сервер лицензирования. - Набор базовых сервисов, которые позволяют добавить аккаунт Google на виртуальное устройство Android и войти в него, используя учетные данные аккаунта издателя или тестового аккаунта.
Войдя в аккаунт издателя или тестовый аккаунт, вы сможете отлаживать и тестировать приложение, не публикуя его. Подробнее о входе в авторизованный аккаунт…
В SDK Manager доступно несколько версий дополнения API Google, но только версия для Android 2.2 и более поздних версий включает необходимые сервисы Google Play.
Чтобы настроить эмулятор для добавления лицензирования в приложение, выполните следующие действия:
- Запустите Android SDK Manager, выбрав в меню Android Studio Tools (Инструменты) > Android > SDK Manager или выполнив команду
<sdk>/tools/android sdk. - Выберите и скачайте API Google для нужной версии Android (не ниже 2.2).
- После завершения скачивания откройте Менеджер AVD. Для этого в меню Tools (Инструменты) Android Studio выберите Tools > Android > AVD Manager (Инструменты > Android > Менеджер AVD) или выполните команду
<sdk>/tools/android avd. - В окне Android Virtual Device Manager (Менеджер виртуальных устройств Android) выберите + Create Virtual Device (+ Создать виртуальное устройство), чтобы задать параметры конфигурации для нового виртуального устройства Android.
- В окне Virtual Device Configuration (Конфигурация виртуального устройства) выберите аппаратное обеспечение устройства и нажмите Next (Далее).
- Выберите API Google в качестве образа системы для запуска на новом виртуальном устройстве Android, а затем нажмите Далее.
- Укажите понятное название виртуального устройства Android и задайте другие параметры конфигурации.
- Нажмите Finish (Готово), чтобы создать новую конфигурацию AVD, которая появится в списке доступных виртуальных устройств Android.
Если вы не знаете, что такое AVD и как их использовать, прочитайте статью Управление виртуальными устройствами.
Обновление конфигурации проекта
После настройки среды выполнения, соответствующей описанным выше требованиям (на реальном устройстве или в эмуляторе), обновите проект приложения или скрипты сборки, чтобы скомпилированные файлы .apk, использующие лицензирование, были развернуты в этой среде.
В частности, если вы разрабатываете приложение в Android Studio, убедитесь, что вы настроили конфигурацию выполнения/отладки, которая нацелена на соответствующее устройство или AVD.
Если проект уже настроен для компиляции со стандартной библиотекой Android 1.5 (уровень API 3) или более поздней версии, то вносить изменения в конфигурацию сборки приложения не нужно. Добавление лицензирования в приложение не должно влиять на конфигурацию сборки приложения.
Настройка библиотеки проверки лицензий
Вам нужно будет настроить LVL в среде разработки, создав проект библиотеки Android или скопировав (импортировав) исходные коды библиотеки непосредственно в существующий пакет приложения. В целом рекомендуется использовать LVL в качестве проекта библиотеки, поскольку это позволяет повторно использовать код лицензирования в нескольких приложениях и поддерживать его в течение долгого времени. Обратите внимание, что LVL не предназначена для компиляции отдельно и добавления в приложение в виде статического JAR-файла.
Рекомендуемый способ использования LVL – настроить ее как новый проект библиотеки Android. Проект библиотеки – это тип проекта разработки, который содержит общий исходный код и ресурсы Android. Другие проекты приложений для Android могут ссылаться на проект библиотеки и во время сборки включать его скомпилированные исходные коды в свои файлы .apk. В контексте лицензирования это означает, что вы можете выполнить большую часть разработки лицензирования один раз в проекте библиотеки, а затем включить источники библиотеки в различные проекты приложений.
Это позволяет единообразно реализовать лицензирование во всех проектах и централизованно управлять им. Если вы не знаете, что такое проекты библиотек и как их использовать, прочитайте статью Управление проектами.
Если вы работаете в Android Studio, вам нужно добавить LVL в проект в качестве нового модуля.
- Импортируйте модуль библиотеки, выбрав File > New> Import Module (Файл > Создать > Импортировать модуль).
- В окне Import Module from Source (Импорт модуля из источника) в поле Source directory (Каталог с исходными файлами) укажите каталог
libraryLVL (каталог, содержащий файл AndroidManifest.xml библиотеки) в качестве корневого каталога проекта (<sdk>/extras/google/play_licensing/library/AndroidManifest.xml). Затем нажмите Next (Далее). - Нажмите Finish (Готово), чтобы импортировать модуль библиотеки.
Подробнее о том, как работать с модулями библиотек в Android Studio…
Включение исходных кодов проекта библиотеки LVL в приложение
Если вы хотите использовать исходный код LVL в качестве проекта библиотеки, добавьте ссылку на него в свойствах проекта приложения. Это указывает инструментам сборки, что при компиляции в приложение нужно включить исходный код проекта библиотеки LVL. Процесс добавления ссылки на проект библиотеки зависит от среды разработки, как описано ниже.
Если вы разрабатываете приложение в Android Studio, то уже должны были добавить модуль библиотеки в проект, как описано в предыдущем разделе. Если вы этого ещё не сделали, сделайте это сейчас, прежде чем продолжить.
Если вы используете инструменты командной строки SDK, перейдите в каталог с проектом приложения и откройте файл project.properties. Добавьте в файл строку, в которой указан ключ android.library.reference.<n> и путь к библиотеке. Пример:
android.library.reference.1=path/to/library_project
Вы также можете использовать эту команду, чтобы обновить свойства проекта, включая ссылку на проект библиотеки:
android update lib-project --target <target_ID> \ --path path/to/my/app_project \ --library path/to/my/library_project
Подробнее о работе с проектами библиотек…
Настройка тестовой среды
В Google Play Console есть инструменты, которые позволяют вам и другим пользователям протестировать лицензирование приложения до его публикации. При реализации лицензирования вы можете использовать инструменты Play Console для тестирования правил приложения и обработки различных ответов на запросы лицензии и условий ошибок.
Основные компоненты тестовой среды для лицензирования:
- Конфигурация "Тестовый ответ" в аккаунте издателя, которая позволяет задать статический ответ на запрос лицензии, возвращаемый, когда сервер обрабатывает проверку лицензии для приложения, загруженного в аккаунт издателя, от пользователя, вошедшего в аккаунт издателя или тестовый аккаунт.
- Необязательный набор тестовых аккаунтов, которые будут получать статический тестовый ответ при проверке лицензии загруженного вами приложения (независимо от того, опубликовано оно или нет).
- Среда выполнения для приложения, которая включает приложение Google Play или дополнение API Google, в котором пользователь вошел в аккаунт издателя или один из тестовых аккаунтов.
Чтобы правильно настроить тестовую среду, выполните следующие действия:
- Настройка статических тестовых ответов, возвращаемых сервером лицензирования.
- Настройка тестовых аккаунтов (при необходимости).
- Войдите в аккаунт на эмуляторе или устройстве, прежде чем запускать проверку лицензии.
Ниже приведена подробная информация.
Как настроить тестовые ответы для проверки лицензий
В аккаунте издателя Google Play есть параметр, который позволяет переопределить стандартную обработку проверки лицензии и возвращать определенный статический код ответа. Этот параметр предназначен только для тестирования и применяется исключительно к проверкам лицензий для загруженных вами приложений, которые выполняются любым пользователем, вошедшим в эмулятор или на устройство с учетными данными аккаунта издателя или зарегистрированного тестового аккаунта. Для других пользователей сервер всегда обрабатывает проверки лицензий по обычным правилам.
Чтобы задать тестовый ответ для своего аккаунта, войдите в аккаунт издателя и нажмите "Изменить профиль". На странице "Изменить профиль" найдите меню "Ответ на тестовый запрос" на панели "Лицензирование", как показано ниже. Вы можете выбрать любой из допустимых кодов ответа сервера, чтобы проверить, как ваше приложение реагирует на него.
Рекомендуем протестировать работу лицензирования в приложении со всеми кодами ответов, доступными в меню "Ответ сервера". Описание кодов приведено в разделе Коды ответов сервера справочника по лицензированию.
Рисунок 2. На панели "Тестирование лицензий" на странице "Сведения об аккаунте" можно настроить тестовые аккаунты и управлять ответами.
Обратите внимание, что тестовый ответ, который вы настраиваете, применяется ко всему аккаунту, то есть не к одному приложению, а ко всем приложениям, связанным с аккаунтом издателя. Если вы тестируете несколько приложений одновременно, изменение тестового ответа повлияет на все эти приложения при следующей проверке лицензии (если пользователь вошел в эмулятор или устройство, используя аккаунт издателя или тестовый аккаунт).
Чтобы получить тестовый ответ на проверку лицензии, необходимо войти в аккаунт на устройстве или эмуляторе, на котором установлено приложение и с которого оно отправляет запрос на сервер. В частности, вы должны войти в систему, используя либо свой аккаунт издателя, либо один из настроенных вами тестовых аккаунтов. Подробную информацию о тестовых аккаунтах вы найдете в следующем разделе.
Список доступных тестовых ответов и их значений приведен в разделе Коды ответов сервера.
Настройка тестовых аккаунтов
В некоторых случаях вам может потребоваться разрешить нескольким командам разработчиков тестировать лицензирование в приложениях, которые в конечном итоге будут опубликованы через ваш аккаунт издателя, но без предоставления им доступа к учетным данным для входа в ваш аккаунт издателя. Для этого в Google Play Console можно настроить один или несколько тестовых аккаунтов, которые будут запрашивать у сервера лицензирования статические тестовые ответы из вашего аккаунта издателя.
Тестовые аккаунты – это стандартные аккаунты Google, которые вы регистрируете в своем аккаунте издателя. Они будут получать тестовые ответы для загруженных вами приложений. Затем разработчики могут войти в свои устройства или эмуляторы, используя учетные данные тестового аккаунта, и инициировать проверку лицензий из установленных приложений. Когда сервер лицензирования получает запрос на проверку лицензии от пользователя тестового аккаунта, он возвращает статический тестовый ответ, настроенный для аккаунта издателя.
Для пользователей, вошедших в систему через тестовые аккаунты, существуют ограничения на доступ и разрешения, в том числе:
- Пользователи тестовых аккаунтов могут запрашивать у сервера лицензирования информацию только о приложениях, которые уже загружены в аккаунт издателя.
- Пользователи тестовых аккаунтов не могут загружать приложения в ваш аккаунт издателя.
- Пользователи тестового аккаунта не могут задавать статический тестовый ответ аккаунта издателя.
В таблице ниже приведены различия между аккаунтом издателя, тестовым аккаунтом и другими аккаунтами.
Таблица 1. Различия между типами аккаунтов для тестирования лицензирования.
| Тип аккаунта | Можно ли проверить лицензию перед загрузкой? | Можно ли получить тестовый ответ? | Можно ли задать тестовый ответ? |
|---|---|---|---|
| Аккаунт издателя | Да | Да | Да |
| Тестовый аккаунт | Нет | Да | Нет |
| Другое | Нет | Нет | Нет |
Как зарегистрировать тестовые аккаунты в аккаунте издателя
Чтобы начать, зарегистрируйте каждый тестовый аккаунт в аккаунте издателя. Как показано на рисунке 2, тестовые аккаунты регистрируются на панели лицензирования на странице редактирования профиля в аккаунте издателя. Просто введите аккаунты в виде списка, разделенного запятыми, и нажмите Сохранить, чтобы сохранить изменения в профиле.
В качестве тестового можно использовать любой аккаунт Google. Если вы хотите владеть тестовыми аккаунтами и управлять ими, вы можете создать их самостоятельно и передать учетные данные разработчикам или тестировщикам.
Загрузка и распространение приложений для пользователей тестовых аккаунтов
Как упоминалось выше, пользователи тестовых аккаунтов могут получать только статические тестовые ответы для приложений, загруженных в аккаунт издателя. Поскольку у этих пользователей нет разрешения на загрузку приложений, вам как издателю нужно будет работать с ними, чтобы собирать приложения для загрузки и распространять загруженные приложения для тестирования. Вы можете собирать и распределять средства любым удобным способом.
После того как приложение загружено и сервер лицензирования распознал его, разработчики и тестировщики могут продолжать изменять приложение в локальной среде разработки, не загружая новые версии. Загружать новую версию нужно, только если локальное приложение увеличивает значение атрибута versionCode в файле манифеста.
Как предоставить открытый ключ пользователям тестового аккаунта
Сервер лицензирования обрабатывает статические тестовые ответы обычным образом, в том числе подписывает данные ответа и добавляет дополнительные параметры. Чтобы разработчики могли использовать тестовые аккаунты вместо аккаунта издателя, вам нужно предоставить им открытый ключ приложения. Разработчики, у которых нет доступа к Play Console, не могут получить открытый ключ приложения и проверить ответы на запросы лицензии.
Если вы решите сгенерировать новую пару лицензионных ключей для приложения, вам нужно будет уведомить об этом всех пользователей тестовых аккаунтов. Для тестировщиков вы можете встроить новый ключ в пакет приложения и распространить его среди пользователей. Разработчикам нужно будет передать новый ключ напрямую.
Вход в авторизованный аккаунт в среде выполнения
Сервис лицензирования определяет, есть ли у пользователя лицензия на приложение. Во время проверки приложение Google Play собирает идентификаторы пользователей из основного аккаунта в системе и отправляет их на сервер вместе с названием пакета приложения и другой информацией. Если же информация о пользователе недоступна, проверка лицензии не может быть выполнена, поэтому приложение Google Play прекращает запрос и возвращает ошибку.
Чтобы во время тестирования приложение могло успешно отправлять запросы на сервер лицензирования, необходимо войти в аккаунт на устройстве или в эмуляторе, используя:
- учетные данные аккаунта издателя;
- Учетные данные тестового аккаунта, зарегистрированного в аккаунте издателя.
Как войти в аккаунт Google в эмуляторе
Если вы тестируете лицензирование в эмуляторе, войдите в аккаунт Google в эмуляторе. Если вы не видите возможности создать новый аккаунт Google, проблема может заключаться в том, что на вашем виртуальном устройстве Android запущен стандартный образ системы Android, а не дополнение API Google, API 8 (выпуск 2) или более поздней версии.
Подробные сведения приведены в разделе Настройка среды выполнения выше.
Если вы войдете в аккаунт издателя, то сможете получать статические тестовые ответы, даже если приложения ещё не загружены в Play Console.
Если вы работаете в крупной организации или сотрудничаете со сторонними разработчиками, которые будут публиковать приложения через ваш сайт, то вам, скорее всего, потребуется создать тестовые аккаунты и использовать их для входа в систему во время тестирования.
Чтобы войти в аккаунт на устройстве или в эмуляторе, выполните следующие действия: Рекомендуется войти в основной аккаунт. Однако если на устройстве или в эмуляторе уже используются другие аккаунты, вы можете создать дополнительный аккаунт и войти в него, используя учетные данные аккаунта издателя или тестового аккаунта.
- Откройте "Настройки > Аккаунты и синхронизация".
- Нажмите Добавить аккаунт и выберите аккаунт Google.
- Нажмите Далее, а затем – Войти.
- Введите имя пользователя и пароль аккаунта издателя или тестового аккаунта, зарегистрированного в аккаунте издателя.
- Нажмите Войти. Выполняется вход в новый аккаунт.
После входа в аккаунт вы можете начать тестирование лицензирования в своем приложении (если вы выполнили описанные выше шаги по интеграции LVL). Когда приложение инициирует проверку лицензии, оно получит ответ, содержащий статический тестовый ответ, настроенный в аккаунте издателя.
Если вы используете эмулятор, вам нужно будет входить в аккаунт издателя или тестовый аккаунт каждый раз, когда вы удаляете данные при перезапуске эмулятора.
После завершения настройки перейдите к разделу Добавление лицензирования в приложение.