Подготовка к лицензированию

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

Настройка издательского аккаунта

Если у вас еще нет учетной записи издателя в Google Play, вам необходимо зарегистрировать ее, используя свою учетную запись Google, и согласиться с условиями использования Google Play.

Для получения более подробной информации см. раздел «Начало работы с публикацией» .

Если у вас уже есть аккаунт издателя в Google Play, используйте Play Console для настройки лицензирования.

С помощью консоли Google Play вы можете:

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

Административные настройки лицензирования

В консоли Play вы можете управлять несколькими административными настройками лицензирования Google Play. Эти настройки позволяют вам:

  • Создайте несколько «тестовых учетных записей», идентифицируемых по адресу электронной почты. Сервер лицензирования позволяет пользователям, вошедшим в систему под тестовыми учетными записями на устройстве или эмуляторе, отправлять проверки лицензий и получать статические тестовые ответы. Вы можете настроить учетные записи на странице «Сведения об учетной записи» в Play Console.
  • Настройте статические тестовые ответы, которые сервер отправляет при получении проверки лицензии для приложения, загруженного в учетную запись издателя, от пользователя, вошедшего в учетную запись издателя или в тестовую учетную запись. Вы можете настроить тестовые ответы на странице «Сведения об учетной записи» в Play Console.
  • Получите открытый ключ приложения для лицензирования. При внедрении лицензирования в приложение необходимо скопировать строку открытого ключа в приложение. Открытый ключ приложения для лицензирования можно получить на странице «Сервисы и API» (в разделе «Все приложения»).

Рисунок 1. Лицензионный ключ приложения доступен на странице «Сервисы и API» в консоли Play.

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

Настройка среды разработки

Настройка среды лицензирования включает в себя следующие задачи:

  1. Настройка среды выполнения для разработки.
  2. Загрузка LVL-файла в ваш SDK
  3. Настройка библиотеки проверки лицензий
  4. Включение проекта библиотеки LVL в ваше приложение

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

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

Настройка среды выполнения

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

Существует два типа среды выполнения, которые вы можете использовать:

  • Устройство на базе Android, на котором установлено приложение Google Play, или
  • Эмулятор Android, работающий с надстройкой Google APIs, с уровнем API 8 (версия 2) или выше.

Запуск на устройстве

Для использования устройства под управлением Android в целях отладки и тестирования лицензирования устройство должно соответствовать следующим требованиям:

  • Используйте совместимую версию Android 1.5 или более позднюю (уровень API 3 или выше), и
  • Запустите образ системы, на котором предустановлено клиентское приложение Google Play.

Если Google Play не предустановлен в образе системы, ваше приложение не сможет взаимодействовать с сервером лицензирования Google Play.

Общую информацию о настройке устройства для разработки приложений Android см. в разделе «Использование аппаратных устройств» .

Запущено на эмуляторе Android.

Если у вас нет подходящего устройства, вы можете использовать эмулятор Android для отладки и тестирования лицензирования.

Поскольку платформы Android, предоставляемые в Android SDK, не включают Google Play, вам необходимо загрузить платформу Google APIs Add-On уровня API 8 (или выше) из репозитория SDK. После загрузки дополнения вам нужно создать конфигурацию AVD, использующую этот образ системы.

Дополнение Google APIs не включает в себя полный клиент Google Play. Однако оно предоставляет:

  • Фоновая служба Google Play, реализующая удаленный интерфейс ILicensingService , позволяющая вашему приложению отправлять проверки лицензий по сети на сервер лицензирования.
  • Набор базовых служб учетных записей, позволяющих добавить учетную запись Google на AVD и войти в систему, используя учетные данные вашей учетной записи издателя или тестовой учетной записи.

    Вход в систему с использованием вашей учетной записи издателя или тестовой учетной записи позволяет отлаживать и тестировать приложение без его публикации. Дополнительную информацию см. в разделе «Вход в авторизованную учетную запись» ниже.

Через SDK Manager доступно несколько версий дополнения Google APIs, но только версия для Android 2.2 и выше включает необходимые сервисы Google Play.

Для настройки эмулятора для добавления лицензий в приложение выполните следующие действия:

  1. Запустите менеджер SDK Android, доступный в меню «Инструменты» Android Studio ( Инструменты > Android > Менеджер SDK ) или выполнив команду <sdk>/tools/android sdk .
  2. Выберите и загрузите API Google для той версии Android, которую вы хотите использовать (обязательно Android 2.2 или выше).
  3. После завершения загрузки откройте AVD Manager, доступный в меню «Инструменты» Android Studio ( Инструменты > Android > AVD Manager ) или выполнив команду <sdk>/tools/android avd .
  4. В окне «Диспетчер виртуальных устройств Android» выберите «+ Создать виртуальное устройство» , чтобы задать параметры конфигурации для нового виртуального устройства.
  5. В окне «Конфигурация виртуального устройства» выберите «Аппаратное обеспечение устройства», затем нажмите «Далее» .
  6. Выберите Google API в качестве образа системы для запуска на новом AVD, затем нажмите «Далее» .
  7. Присвойте AVD описательное имя, а затем задайте остальные параметры конфигурации по мере необходимости.
  8. Нажмите «Готово» , чтобы создать новую конфигурацию 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-модуль в свой проект в качестве нового модуля.

  1. Для импорта модуля библиотеки используйте окно "Импорт модуля из исходного кода", выбрав Файл > Создать > Импорт модуля .
  2. В окне «Импорт модуля из исходного кода» в поле «Каталог исходного кода» укажите каталог library LVL (каталог, содержащий файл AndroidManifest.xml библиотеки) в качестве корневого каталога проекта ( <sdk>/extras/google/play_licensing/library/AndroidManifest.xml ), затем выберите «Далее» .
  3. Нажмите «Готово» , чтобы импортировать модуль библиотеки.

Для получения дополнительной информации о работе с библиотечными модулями в Android Studio см. раздел «Создание библиотеки Android» .

Включение исходных кодов проекта библиотеки LVL в ваше приложение.

Если вы хотите использовать исходные коды 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 предоставляет инструменты настройки, позволяющие вам и другим пользователям тестировать лицензирование вашего приложения до его публикации. В процессе внедрения лицензирования вы можете использовать инструменты Play Console для проверки политики вашего приложения и обработки различных ответов и ошибок, связанных с лицензированием.

Основные компоненты тестовой среды для лицензирования включают в себя:

  • Параметр "Тестовый ответ" в вашей учетной записи издателя позволяет задать статический ответ о лицензировании, возвращаемый сервером при проверке лицензии для приложения, загруженного в учетную запись издателя пользователем, вошедшим в систему под этой учетной записью или под тестовой учетной записью.
  • Дополнительный набор тестовых учетных записей, которые будут получать статический ответ теста при проверке лицензии загруженного вами приложения (независимо от того, опубликовано приложение или нет).
  • Среда выполнения приложения, включающая приложение Google Play или надстройку Google APIs, в которой пользователь авторизован под учетной записью издателя или одной из тестовых учетных записей.

Правильная настройка тестовой среды включает в себя:

  1. Настройка статических тестовых ответов , возвращаемых сервером лицензирования.
  2. При необходимости настройте тестовые учетные записи .
  3. Перед началом проверки лицензии необходимо корректно войти в эмулятор или устройство.

Более подробная информация представлена ​​в разделах ниже.

Настройка тестовых ответов для проверки лицензий

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

Чтобы настроить тестовый ответ для вашей учетной записи, войдите в свою учетную запись издателя и нажмите «Редактировать профиль». На странице «Редактировать профиль» найдите меню «Тестовый ответ» в панели «Лицензирование», показанное ниже. Вы можете выбрать из полного набора допустимых кодов ответа сервера, чтобы управлять ответом или условием, которое вы хотите проверить в своем приложении.

В целом, следует обязательно протестировать реализацию лицензирования вашего приложения со всеми доступными кодами ответа в меню «Тест ответа». Описание кодов см. в разделе «Коды ответа сервера» в справочнике по лицензированию .

Рисунок 2. Панель «Тестирование лицензий» на странице сведений об учетной записи позволяет создавать тестовые учетные записи и управлять ответами на тесты.

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

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

Список доступных тестовых ответов и их значения см. в разделе «Коды ответа сервера» .

Настройка тестовых учетных записей

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

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

Разумеется, существуют ограничения на доступ и права, предоставляемые пользователям, вошедшим в систему через тестовые учетные записи, в том числе:

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

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

Таблица 1. Различия в типах учетных записей для тестирования лицензий.

Тип счета Можно ли проверить лицензию перед загрузкой? Можно ли получить ответ на тестовый запрос? Можно ли задать ответ на тест?
Учетная запись издателя Да Да Да
Тестовый аккаунт Нет Да Нет
Другой Нет Нет Нет

Регистрация тестовых учетных записей в учетной записи издателя.

Для начала вам необходимо зарегистрировать каждую тестовую учетную запись в вашей учетной записи издателя. Как показано на рисунке 2, регистрация тестовых учетных записей осуществляется на панели «Лицензирование» на странице «Редактировать профиль» вашей учетной записи издателя. Просто введите учетные записи в виде списка, разделенного запятыми, и нажмите «Сохранить» , чтобы сохранить изменения в профиле.

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

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

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

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

Распространение вашего открытого ключа среди пользователей тестовой учетной записи.

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

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

Вход в авторизованную учетную запись в среде выполнения.

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

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

  • Учетные данные аккаунта издателя, или
  • Учетные данные тестовой учетной записи, зарегистрированной в учетной записи издателя.

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

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

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

  1. Откройте «Настройки» > «Учетные записи и синхронизация».
  2. Выберите «Добавить учетную запись» и выберите добавление учетной записи Google.
  3. Выберите «Далее» , а затем «Войти» .
  4. Введите имя пользователя и пароль либо учетной записи издателя, либо тестовой учетной записи, зарегистрированной в учетной записи издателя.
  5. Выберите «Войти» . Система выполнит вход в новую учетную запись.

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

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

После завершения процедуры настройки перейдите к разделу «Добавление лицензий в ваше приложение» .