Станом на перший квартал 2017 року Android був найпопулярнішою мобільною платформою. Кількість пристроїв на цій операційній системі в 6 разів більша, аніж на інших операційних системах загалом. Звичайно, йдеться не лише про смартфони, але й про безліч інших мобільних пристроїв, наприклад, планшети, смарт-годинники, телевізійні й автомобільні платформи тощо.

Чому ж Android став таким популярним? Одна із причин полягає у тому, що для виробників апаратного забезпечення (мобільних пристроїв) ця операційна система умовно безкоштовна. Її можна встановити на різноманітні пристрої. Щоправда, часто при цьому потрібно проводити портування, тобто адаптацію Android. До речі, це GlobalLogic реалізовує для широкого кола клієнтів, тому багато що із викладеного нижче перевірено на власному досвіді.

Одна із задач, з якою стикаються інженери, що займаються портуванням, — забезпечити появу на пристрої ключових сервісів Google: Google Play Store, Gmail, Google Maps, Google Drive та ін. Це не так просто: для цього потрібно пройти процедуру ліцензування. Отже, у цій статті я хочу розповісти про загальний алгоритм ліцензування і відповісти на питання, які постають перед багатьма розробниками.

З точки зору розробки Android можна поділити на:

  • The Android Open Source Project (AOSP) (вільний для завантаження);
  • Google Mobile Services (GMS) (потребує ліцензування).

На основі AOSPу, без використання GMS, цілком можна випустити пристрій. Так робили, наприклад, Amazon, Nokia, виробники Android-пристроїв на ринку Китаю. Розробкою на основі AOSPу активно займається спільнота LineageOS (послідовники Cyanogenmod). Але GMS значно додає функціональної привабливості. В першу чергу, перевага полягає у наявності Google Play Store «з коробки». Звісно, є методи установки офіційного магазину додатків від Google без ліцензії (по-різному дієві), але вони, як правило, не для звичайних користувачів, які хочуть, щоб усе просто працювало без додаткових «танців з бубном».

Що таке Google Mobile Services (GMS)

Google Mobile Services — це набір додатків і APIs, що допомагають покращувати функціональність операційної системи незалежно від пристрою. До їх числа входять наприклад, Gmail, Google Maps, Google Drive, YouTube, але найважливіша частина GMS — це Google Play Store і Google-сервіси. Їх доволі складно заінсталювати в обхід офіційної процедури від Google. Щоб отримати GMS-пакет офіційно, а головне, мати право на продаж пристроїв з ним, треба пройти процедуру ліцензування. Ліцензування здійснюється у рамках програми сумісності Android.

Програма сумісності Android (Android Compatibility Program)

Для того, щоб забезпечити якнайкращу якість операційної системи, була розроблена програма сумісності Android. Ця програма має на меті:

  • Надати чітко визначене середовище для розробників додатків. Без стандартів сумісності пристрої могли б відрізнятись настільки, що для кожної моделі розробникам потрібно було б робити різні версії додатків. Програма сумісності точно визначає, що розробники можуть очікувати від програмної частини і «заліза». При належному використані ця інформація може значно допомогти в розробці.
  • Дати можливість виробникам вирізнятись, але лишатись сумісними. Програма сумісності передбачає можливість роботи third-party-додатків, що дозволяє розробникам надавати пристроям унікальні функції без втрат у сумісності.
  • Мінімізувати витрати, пов’язані з сумісністю. Сумісність має бути легкою і недорогою для розробників. Інструменти для тестування є безкоштовними і пристосовані для постійного використання у процесі розробки.

Складові програми сумісності

Складовими програми сумісності є:

  • AOSP (Android Open Source Project) — вихідний код Android, доступний будь-кому для закачування і внесення змін.
  • CDD (Compatibility Definition Document) — документ, у якому описані вимоги до пристрою, що мають бути виконані, щоб пристрій вважався сумісним із певною версією Android. Кожна версія операційної системи має свій окремий варіант.
  • CTS (The Compatibility Test Suite) — набір автоматичних тестів, які запускаються на пристрої. Для різних версій Android доступні різні версії, причому для нових версій кількість тестів збільшується. Якщо у версії 1.6 було лише близько 23 тисяч тестів, то у версії 8.x їх уже більше 600 тисяч.

Які вимоги до ліцензування

Формально вимога лише одна — треба заповнити невелику форму: вказати назву компанії-виробника, тип і кількість пристроїв, що виробляються, версію Android тощо.

Google рекомендує формувати запит не пізніше, аніж за 30 днів перед початком продажів, але на практиці краще це робити за кілька місяців (як мінімум). Швидкість розгляду напряму залежить від кількості запланованих для продажу одиниць, надійності вашого бізнесу, країн розповсюдження тощо.

Після отримання схвальної відповіді від Google естафета передається перевіреним third-party-компаніям, що займаються тестуванням GMS. Ці компанії виступають посередником між Google і виробниками і беруть на себе офіційне GMS-тестування. Чим кращий продукт ви передасте на офіційне тестування, тим менше ресурсів у вас піде на отримання ліцензії. Тому не завадить почати процес тестування/відлагодження самостійно, а потім вже на певній стадії передати його посередникам.

Скільки це коштує

Android вважається безкоштовною операційною системою. Але це не зовсім так.

У 2014 році The Guardian опублікувала статтю, в якій вказувала, що Google отримує по кілька центів з кожного пристрою за ліцензування. Пізніше редакція була змушена виправити оригінальний текст у зв’язку з непорозумінням, яке він викликав. Google не отримує гроші за ліцензування від виробників пристроїв. Але для отримання GMS компанія вимагає GMS-ліцензування, для проходження якого потрібно співпрацювати з компаніями-посередниками, що працюють не безкоштовно. Вартість їхніх послуг не є сталою і залежить від багатьох умов. За неофіційними даними виробнику це коштує близько $10-15 тис. за одну модель пристрою.

Які перевірки потрібно пройти відповідно до вимог Google

Фактично весь процес поділяється на дві стадії: до отримання GMS і після. Тут ідеться про отримання спеціального Google GMS, який ще не можна офіційно випускати на пристроях, але вже можна завантажити і почати процес інтеграції.

До отримання GMS потрібно перевірити пристрій на відповідність певним вимогам:

  • CDD (Compatibility Definition Document) — деякі критерії CDD перевіряються за допомогою CTS та інших наборів тестів, але далеко не всі. Тому перевірка відповідності до CDD є окремим процесом, про який не варто забувати.
  • CTS (The Compatibility Test Suite) — це набір автоматичних тестів, про який ми згадували раніше.
  • CTS Verifier — це додаток до CTS, а саме ручні тести. Їх значно менше, аніж автоматичних, і вони стосуються функціональностей, які неможливо належно протестувати інакше.

Усі невідповідності мають бути усунені, окрім тих, які не можна подолати через певні обставини (наприклад, обмеження платформи або дефекти тестів). Дозвіл на ігнорування подібних результатів треба попередньо отримати від Google, зареєструвавши відповідний запит у Google Issue Tracker. Попередньо, звісно, слід пошукати, чи подібної проблеми вже не зареєстровано до вас. Якщо представник Google «дає добро» на ігнорування цієї проблеми, вона реєструється як «waiver» («відмашка»). На жаль, далеко не завжди відповідь можна отримати швидко.

Після цього ви віддаєте пристрій на офіційне тестування і, якщо результат відповідає заявленому, отримуєте GMS. З цього моменту ви вже можете почати процес інтеграції додатка в систему, але ще не маєте права на продаж пристрою з ним. Треба пройти ще кілька перевірок:

  • GTS (Google Mobile Services Test Suite) — це набір тестів, які перевіряють, чи коректно працює GMS на пристрої після інтеграції (наприклад, програвання відео різної якості з додатком Google Play Videos).
  • CAT — це тести для перевірки якості запису/відтворення звуку.

Під час цих перевірок, на відміну від попередніх, ми не маємо доступу до вихідного коду, і відповідно відлагоджувати проблеми набагато складніше.

Висновки

Можливо, вищеописаний процес не надто простий, але таким чином Google вдається гарантувати:

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

Безпеку зберігання особистих даних. Більшість пристроїв на Android містять персональну інформацію наприклад, паролі, дані банківських карт тощо. Пройдена сертифікація підтверджує, що дані користувачів, збережені на пристрої, будуть у безпеці, а критичні вразливості будуть швидко вирішені (відносно недавній приклад — Stagefright).

Звісно, це лише невелика частка інформації з цієї теми, але її має бути достатньо для загального розуміння процесу. Сподіваюся, стаття була для вас корисною.

Олександр Масечко, QA Team Lead, Consultant, GlobalLogic.