Оглавление:
- Создание нового приложения для Android
- Библиотека лицензирования
- Получение лицензионного ключа для вашего приложения
- Изменение вашего приложения для лицензирования
- Тестирование лицензирования вашего приложения
Видео: V.A.C.® Dressing – Basic Application – Applying the V.A.C.® Therapy System Dressing 2025
При лицензировании приложений Android каждое устройство проверяет сервер, чтобы убедиться, что у этого устройства есть разрешение на запуск вашего приложения. Лицензирование важно для любого платного приложения. Лицензирование также является хорошей предосторожностью с бесплатным приложением (чтобы помочь вам сохранить право собственности на концепцию приложения). В этой статье вы найдете инструкции по добавлению простой схемы лицензирования в приложение для Android.
Создание нового приложения для Android
Создайте новый проект Android так, как обычно. При настройке минимального SDK выберите API-уровень 19 или ниже. В сборке нового приложения. gradle file, измените targetSdkVersion на 19 или ниже. (Требуется больше работы для лицензирования при настройке нового уровня API.)
Библиотека лицензирования
Вот один из способов добавить библиотеку лицензирования Google в ваш проект:
-
В главном меню Android Studio выберите Инструменты → Android → Менеджер SDK.
-
На вкладке SDK Tools SDK Manager выберите Библиотеку лицензирования Google Play.
-
Нажмите «ОК», чтобы загрузить и установить библиотеку лицензирования.
-
Когда установка завершена, нажмите «Готово», чтобы закрыть диспетчер SDK.
-
В главном меню Android Studio выберите «Файл» → «Структура проекта».
-
В левой части диалогового окна «Структура проекта» выберите элемент «Расположение SDK».
-
В основной части диалогового окна «Структура проекта» обратите внимание на запись в текстовом поле «Расположение Android-SDK».
Это место на жестком диске, на котором установлен Android SDK.
-
Нажмите «ОК», чтобы закрыть диалоговое окно «Структура проекта».
-
С помощью Проводника или Finder вашего компьютера разработки посетите место на жестком диске, на котором установлен Android SDK.
-
Перейдите в каталог extras / google / play_licensing / library / src / com.
В этом каталоге вы найдете подкаталог с именем google.
-
Скопируйте каталог google в каталог приложения / src / main / java / com вашего приложения.
Теперь каталог приложения / src / main / java / com вашего приложения имеет два подкаталога. Например, если приложение находится в пакете с именем com. allyourcode. licensingdemo, каталог приложения / src / main / java / com приложения имеет подкаталоги с именем allyourcode и google. Вы можете увидеть это с помощью Проводника или Finder вашего компьютера, но вы также можете увидеть его в окне инструмента приложения Project Studio (как показано здесь).
Некоторые новые подкаталоги.Получение лицензионного ключа для вашего приложения
Для публикации этого приложения необходим лицензионный ключ. Чтобы получить свой ключ, выполните следующие действия:
-
Посетите консоль разработчика Google Play Store.
-
В консоли разработчика нажмите кнопку «Добавить новое приложение».
Появится страница «Добавить новое приложение».
-
На странице «Добавить новое приложение» введите заголовок для нового приложения.
-
На странице «Добавить новое приложение» нажмите кнопку «Подготовить список магазинов».
Вы попали на страницу «Список магазинов».
-
В левой части страницы «Список магазинов» выберите «Службы» и «API».
Изменяется содержимое страницы магазина.
-
На странице «Список магазинов» найдите чудовищно длинную последовательность символов, например, показанную здесь.
Чудовищно длинная последовательность чисел. -
Скопируйте эту последовательность символов и вставьте ее в текстовый файл на жестком диске вашего компьютера разработки.
Изменение вашего приложения для лицензирования
Затем вам нужно добавить код в свое приложение, чтобы приложение проверило сервер лицензирования, прежде чем позволить клиенту использовать его. Вот пример с голыми костями. (Для более богатого примера см. Код в папке extras / google / play_licensing / sample SDK.)
import android. приложение. Мероприятия; импорт андроида. содержание. Намерение; импорт андроида. Операционные системы. Bundle; импорт андроида. поставщик. Настройки; импорт com. Google. андроид. вендинг. лицензирование. AESObfuscator; импорт com. Google. андроид. вендинг. лицензирование. LicenseChecker; импорт com. Google. андроид. вендинг. лицензирование. LicenseCheckerCallback; импорт com. Google. андроид. вендинг. лицензирование. ServerManagedPolicy; public class MainActivity extends Activity {private static final String BASE64_PUBLIC_KEY = "ВАШ ПУБЛИЧНЫЙ КЛЮЧ ИМЕЕТ ЗДЕСЬ"; private static final byte [] SALT = новый байт [] {// Здесь перечислены двадцать чисел (от -128 до +127)}; частный LicenseCheckerCallback mLicenseCheckerCallback; частный LicenseChecker mChecker; private boolean keepGoing = true; @Override public void onCreate (Bundle savedInstanceState) {супер. OnCreate (savedInstanceState); setContentView (R. layout. activity_main); String deviceId = Настройки. Secure. getString (getContentResolver (), Настройки. Безопасный ANDROID_ID); mLicenseCheckerCallback = новый MyLicenseCheckerCallback (); mChecker = новый LicenseChecker (это новый ServerManagedPolicy (это новый AESObfuscator (SALT, getPackageName (), deviceId)), BASE64_PUBLIC_KEY); doCheck ();} @Override public void onResume () {супер. onResume (); if (! keepGoing) {finish ();}} private void doCheck () {mChecker. checkAccess (mLicenseCheckerCallback);} закрытый класс MyLicenseCheckerCallback реализует LicenseCheckerCallback {public void allow (int policyReason) {if (isFinishing ()) {// Не обновлять пользовательский интерфейс, если Activity завершает работу. return;}} public void dontAllow (int policyReason) {if (isFinishing ()) {return;} keepGoing = false; Intent intent = new Intent (MainActivity. This, NotLicensedActivity. Class); намерение. putExtra ("message", getResources (). getString (R. string. app_not_licensed) + "(0x" + Integer. toHexString (policyReason) + ")"); startActivity (intent);} public void applicationError (int errorCode) {if (isFinishing ()) {return;} keepGoing = false; Intent intent = new Intent (MainActivity. This, NotLicensedActivity. Class); намерение. putExtra ("message", getResources ().getString (R. string. application_error) + "(0x" + Integer. toHexString (errorCode) + ")"); startActivity (намерение);}} @Override protected void onDestroy () {супер. OnDestroy (); mChecker. OnDestroy (); // Не забывайте эту строку. Без него ваше приложение может потерпеть крах.}}
Чтобы этот код кода работал, вам нужно добавить дополнительные ингредиенты:
-
В основном действии замените слова, которые ВАШ ПУБЛИЧНЫЙ КЛЮЧ ИДЕТ ЗДЕСЬ с помощью вашего собственного лицензионного ключа от Шаги 6 и 7 в разделе «Получение лицензионного ключа для вашего приложения» в этой статье.
-
Составьте собственное значение SALT на 20 номеров - причудливый термин для набора случайно полученных значений - и добавьте его в код основной деятельности.
-
Создайте сетевые ресурсы app_not_licensed и application_error.
-
Добавить в проект AndroidManifest. xml-файл.
-
Добавьте код вашего собственного приложения к образцу кода. (Другими словами, сделайте свое приложение так, как он должен делать - играйте в игру, отображайте информацию, решайте проблему или что-то еще.)
-
Создайте класс NotLicensedActivity.
Здесь копируется образец NotLicensedActivity.
Открытый класс NotLicensedActivity extends Activity {public void onCreate (Bundle savedInstanceState) {супер. OnCreate (savedInstanceState); setContentView (R. layout. not_licensed); Строковое сообщение = getIntent (). getExtras (). GetString ("сообщение"); ((TextView) findViewById (R. Id. Message_text)). SetText (сообщение); ((TextView) findViewById (R. Id. Message_text2)). setText (message);} public void quitApp (View view) {finish ();}}
-
Добавить текстовые представления с именем message_text и message_text2 в файл макета NotLicensedActivity.
В основном действии суть проверки лицензии заключается в двух частях: a) вызов toCheck (), который взаимодействует с сервером Google Play, и (b) внутренний класс MyLicenseCheckerCallback (класс, который отвечает на результаты сервера Play). В LicenseCheckerCallback должно быть как минимум три метода - метод allow () для «Идем дальше и использовать приложение», метод dontAllow () для «у вас нет лицензии на использование этого приложения» и метода applicationError () для "Ой ой! "
В примере кода ничего не делается в методе allow (). В методах dontAllow () и applicationError () запускается другое действие, которое называется NotLicensedActivity. Вы можете сделать эту NotLicensedActivity делать все, что хотите. Что бы ни происходило в NotLicensedActivity, поле keepGoing имеет значение false, указывая основной активности на вызов finish () (в методе onResume) при возврате из NotLicensedActivity.
Вы можете использовать этот трюк или сделать что-то другое. В Android активность не модальная . То есть, если одно действие частично покрывает другое действие, пользователь может взаимодействовать с любым действием, касаясь соответствующей части экрана. Поэтому, если NotLicensedActivity не полностью перекрывает основное действие, пользователь может обойти NotLicensedActivity, коснувшись другой части экрана. Чтобы это не происходило, сделайте NotLicensedActivity обложкой всего экрана, сопротивляясь соблазну сделать NotLicensedActivity похожим на небольшое диалоговое окно.
Тестирование лицензирования вашего приложения
Работает ли ваше лицензирование приложений? Могут ли лицензированные пользователи запускать ваше приложение? А как насчет нелицензированных пользователей? Могут ли они запустить приложение? Вы можете узнать после того, как вы загрузили свое приложение и перед публикацией своего приложения. Вот как:
-
Посетите // play. Google. ком / приложения / публикации /.
-
В самой левой части страницы «Консоль разработчика» выберите «Настройки».
Появится страница настроек вашей учетной записи.
-
В левой части страницы настроек выберите «Сведения об учетной записи».
-
Прокрутите страницу «Сведения о счете», пока не найдете раздел «Тестирование лицензии».
В этом разделе «Тестирование лицензии» вы найдете текстовое поле с меткой «Учетные записи Gmail» с помощью «Тестирования доступа». Вы также найдете раскрывающийся список с надписью License Test Response.
Параметры ответа на проверку лицензии -
В поле Gmail Accounts with Testing Access введите адрес электронной почты для одной или нескольких учетных записей Gmail.
Если вы вводите несколько адресов электронной почты, используйте запятую, чтобы отделить один адрес от другого. Люди, чьи Android-устройства зарегистрированы на этих адресах электронной почты, смогут найти ваше приложение в Google Play Store. (Другие не будут видеть ваше приложение.)
-
В списке Лицензионный тестовый ответ выберите NOT_LICENSED.
Пользователи, установившие ваше приложение (пользователи с адресами Gmail, перечисленные на шаге 5), получат этот NOT_LICENSED ответ при попытке запустить приложение.
-
Сообщите пользователям в своем списке учетных записей Gmail попробовать загрузить и установить приложение.
Если код вашего приложения верен (например, если метод onCreate в основной деятельности этой статьи выполняет свою работу), пользователь не сможет продолжить работу вашего приложения. Это именно то, что вам нужно
-
Когда вы удовлетворены результатами тестирования на шагах 6 и 7, перейдите в консоль разработчика и измените лицензионный ответ теста на ЛИЦЕНЗИРОВАН.
-
Сообщите пользователям в списке учетных записей Gmail повторить попытку запуска приложения.
Если код вашего приложения верен (например, если метод onCreate в основной деятельности этой статьи выполняет свою работу), пользователь сможет продолжить работу вашего приложения.
-
Попробуйте другие параметры в списке лицензионных тестовых ответов - такие параметры, как LICENSED_OLD_KEY, ERROR_SERVER_FAILURE и т. Д.
Помните, что нет такого теста, как слишком много.