Безхмарне мобільний додаток — життя без Google Play

Трохи раніше ми з вами думали про те, які є альтернативи Google Play, і як можна обходити різні способи блокування на мобільних додатках за допомогою Google Compression Proxy і тора. Сьогодні хочеться поговорити про те, чи можна запустити і підтримувати повноцінне мобільний додаток на Android без допомоги якоїсь обов'язкової зовнішньої інфраструктури. Розповідати буду на прикладі все того ж програми для перегляду рутрекера. Воно нічим особливо не примітна, але дуже наочно.




Для кого це

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

Етап перший. Установка.
Насправді, це найскладніший етап — ваше застосування повинне якось потрапити користувачеві на пристрій. Якщо програма розрахована на казуальних користувачів, які можуть поставити що-то тільки з Google Play, то тут, звичайно, жаль і ах. З іншого боку, якщо у вас програма саме такого роду, то ви, швидше за все, зможете скористатися Google Play.

Раніше я думав про Yandex.Store — але досвід показує, що він просто повільно гасне, покинутий і забутий (навіть співробітники Яндекса не можуть відповісти на питання про плани на його рахунок — а я питав).

Далі в голову приходить F-Droid. Варіант непоганий, але володіє кількома мінусами, які можуть бути для вас фатальні:
  • Ви повинні надати вихідний код проекту;
  • У користувача має стояти додаток F-Droid, чи треба його якось на це уламати;
  • Оновлення без попереднього видалення в такому випадку зможуть встановлюватися тільки з F-Droid (вони самі збирають і підписують ваше додаток з вихідного коду);
  • Оновлення програми зможе відбуватися тільки раз на добу;
  • В результаті ви залишаєтеся намертво прив'язані до F-Droid, що теж не дуже круто.


Є ще деяка кількість апп сторів різного ступеня розвитку і загинання, але не будемо на цьому зупинятися докладно — ви можете нагуглити досить багато оглядів подібного добра. І в будь-якому випадку залишаться мінуси в тому, що вам доведеться навчити користувача використанню цього апп стора, ви будете прив'язані до нього, або вам доведеться публікувати ваш додаток в купу сторів… загалом, все досить сумно.

Що ж робити? Відповідь досить топорен у своїй простоті — просто поширюйте додаток без будь-яких сторів — у вигляді apk-файлу! Можна зберігати його на будь-якому сервері — від FTP і HTTP до кулі на дропбоксе. Це, звичайно, зажадає галочку на «установку додатків сторонніх джерел» — але вона нам потрібна в будь-якому випадку. Та й користувачі вже давно навчилися ставити все, що їм потрібно — ті ж покемони, встановлені на піку популярності мало не на кожному десятому телефоні (при відсутності їх у російському гугл плее) це наочно показують (так, покемонів я теж люблю за те, як вони наочно показують багато речей). У цьому випадку ви можете розкласти яйця по купі різних кошиків — у вас може бути безліч джерел установки і оновлення програми.

Серйозний мінус тільки один — у момент установки ніяк не можна перевірити, чи це дійсно ваш додаток, або злий фейк. Ну на жаль. Для хардкорних параноїків можна публікувати хеш на надійному розташуванні, наприклад.

В моєму випадку я використав інфраструктуру github, оскільки розробляю додаток з відкритим кодом (і люблю спільну роботу, пулл реквесты і все це). Але повторюсь — можна було б використовувати все що завгодно — 4pda, торенти, FTP, HTTP, Dropbox, передачу апк через телеграм, хостинг на narod.ru і так далі. Будь-яке збочення, яке прийде вам в голову.

Етап другий. Налагодження.
Здавалося б, без звітів гугла життя не миле, і ми більше нічого не зможемо налагодити. Але це не так. Є велика кількість сервісів, які пропонують нам набагато більше цікавого, ніж гугл. Як ви думаєте — чому всередині кожного п'ятого додатки виявляються бінарники crashalytics? Просто тому, що це набагато зручніше!

Отже, ви можете збирати інформацію про падіння сторонніми інструментами. Сам я використовував crashalytics і Acra. Сrashalytics дає вам з коробки все, що можна — але у своєму хмарі. Acra дає вам навіть більше і пропонує купу варіантів бекенду — але це треба робити і думати, що не завжди хочеться. Так що Acra я вибирав в тому випадку, якщо дані просто не можна було передавати в чуже хмара. Для Acra був написаний простенький бекенд, який складав репорти в Elasticsearch, після чого їх можна було дивитися в Kibana (просто користуючись поточної інфраструктурою).
Так що після отримання репорта все залежить тільки від вашої фантазії — зібрані дані можна передавати по емейлу, через веб-сервера, через сервера в торі, поштою Росії, відправляти гінцями і так далі.

Етап третій. Оновлення.
Так, ми давно вийшли з того часу, коли оновлення поставлялися на красивих дискетах раз у кілька років. Напевно, це на краще. Отже, ви швидше за все захочете мати можливість оновлювати програму як мінімум раз на добу.
На поточний момент розглядаємо варіант з тим, що ви не використовуєте ніякі стори, які про це дбають. В такому випадку, вам потрібно мати якийсь пул серверів з метеданными про оновлення і власне бинарниками. Як і раніше — все обмежується тільки вашою фантазією. А гарантом того, що це все ще ваш додаток, є підпис, розбіжність якої проігнорує тільки дуже безглуздий користувач (навряд чи він є вашою ЦА). Ну і ніщо не заважає вам провалидировать викачане оновлення будь-якими своїми методами.
У моєму випадку використовувався той же github — там є зручне API для отримання даних про релізах, і мені не потрібно турбуватися про трафік, доступності та інших речах. Якщо ж ваш додаток банять де ні попадя — цілком можна при запуску, запускати тор і викачувати оновлення звідти.

Єдина тонкість цього етапу — надзвичайно важливо не зганьбитися в написанні алгоритму оновлення. В майбутньому оновленні ви можете поправити будь баг в додатку — крім того, який завадить поставити це оновлення… Ну і важливо, щоб ваш додаток не впало до моменту оновлення. Звичайно, можна забороняти будь-яку активність у додатку до перевірки і оновлення — але для користувача це не дуже зручно. Ще можна пробувати ловити будь крэши і… Не крэшиться… Але якщо у вас в додатку є нативні бібліотеки та інші способи вистрілити собі в ногу, то креш все одно можливий.

Етап четвертий. Аналітика.
Все добре, у вас є працююче активну додаток і користувачі. Незрозуміло одне — якого біса там відбувається?!
Якщо в Google Play ви це вирішували за допомогою Google Analytics для Android, то тепер… Ви можете це вирішувати це за допомогою будь-якого іншого сервісу аналітики. Включаючи можливості того ж Fabric. Далі повторюватися не буду — ви повністю контролюєте, що, куди і як ви шлете.
Приклад з Fabric (я збираю тільки дані про тайтлах переглянутих сторінок з цікавості).
До речі, на гітхабі можна отримати невелику статистику відвідин репозиторію, що теж цікаво.

Етап п'ятий. Монетизація.
До того, як впадати у відчай при думці про те, що без гугла ви більше не зможете продавати свою програму, можна подумати і вирішити, що… Не так вже він нам і потрібен. Якщо ви монетизируете додаток за допомогою реклами, то можна взяти будь гугловый движок (тисячі їх). Якщо за допомогою покупок — ніхто не завадить вам інтегрувати будь платіжний рішення — від Stripe до перекладу биткоинов…

Підсумок.
Раптово виявляється, що принципових проблем немає. Програма може повноцінно працювати — не так щоб сферично у вакуумі, але принаймні з безліччю різних взаємозамінних інфраструктур, не спираючись при цьому на гугл. Так що якщо вас забанили — не впадайте у відчай! Спосіб вижити є. Звичайно, буде важче — але це вже нескінченно краще, ніж просто згортатися і розходитися. І я дуже сподіваюся, що багато хто так вчинять, з'явиться багато популярних додатків, які працюють автономно, і це, в тому числі, вплине на Google — можливо, вони нарешті посадять кілька людей з плоті і крові на розбір питань щодо блокування.

Щодо моєї програми, яку я використовував в якості прикладу — гитхаб каже, що у нього 20.000 завантажень. Навіть якщо половина з них це оновлення, мені все одно здається, що результат все одно вельми гідний — з урахуванням того, що я ніде його не рекламував (навіщо?), і воно описане тільки на хабре, рутрекере і 4pda.

P.s. На всяк випадок попереджаю — гугл забороняє оновлення програми з альтернативних джерел.

P. S. 2 Ви, ймовірно, вже чули, що Google купив Fabric. Залишається тільки сподіватися, що він його не зламає і не зробить обов'язкову прив'язку до Google Play. Але навіть якщо так, у нас ще є багато запасних варіантів.

Посилання

  • Петиція в Google, яка просить поважати маленьких розробників і не банити їх і їх застосування за просто так. Закрита, підписати не можна — але просто для усвідомлення масштабу проблеми. Не те щоб 4000 людина не могла помилятися, але все ж;
  • Цікава історія про видалення і відновлення програми в Google Play. По-моєму, сталося рідкісне диво. А що якщо б дива не сталося?
  • Додаток для рутрекера, який я використовував в якості прикладу. Можна використовувати його код, в тому числі код механізму оновлення — але уважно його отсматривайте, розробка під Android — моє хобі, так що косяки високо вірогідні;
  • Приклад інтерфейсу Fabric;
  • Ідеальний реліз Fabric.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.