WWW.MASH.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - онлайн публикации
 

«INSTANT APPS Как мы научили приложение работать без установки Евгений Сатуров Android Developer Сервис + пользователи = информативно красиво Web или Native App быстро ...»

ANDROID

INSTANT APPS

Как мы научили приложение

работать без установки

Евгений Сатуров

Android Developer

@saturovv

Сервис +

пользователи =

информативно

красиво

Web или Native App

быстро удобно

доступно функционально

ИСПОЛЬЗОВАТЬ

ЗАПУСТИТЬ

УСТАНОВИТЬ

НАЙТИ

ИСПОЛЬЗОВАТЬ

ЗАПУСТИТЬ

НАЙТИ информативно красиво Instant App быстро удобно когда-нибудь заработает у всех доступно функционально Что получает пользователь?

Что получает пользователь?

- Только ту часть приложения, которая ему нужна сейчас .

Instant Flow your-service.com/webpage Если существует IA, обрабатывающий эту ссылку открывается IA .

Приложения не остаётся в списке установленных после закрытия .

Сценарии покупка товара бронирование отеля В Instant App должен реализовываться как минимум один полный сценарий приложения .

чтение статьи вызов такси просмотр видеоролика Instant App - средство привлечения клиентов в ваш бизнес, а не пользователей в ваше приложение .

86 / 155 3,1 Mb Взгляд изнутри Создание Instant App на основе существующего проекта на 90% рефакторинг .

И незначительный объём кодинга .

Да, ваш проект станет мультимодульным .

Все модули могут скачиваться независимо друг от друга .

До Application После Feature 1 Feature 2 Feature 3 Application Instant App - это не отдельное приложение .

Из одной кодовой базы будут собираться два типа артефактов .

Один проект - две сборки Source Code Installable App Instant App Устанавливаемое приложение installable.apk Base code Feature 1 Feature 2 Feature 3 Instant App instant_app.zip Base APK Feature 1 APK Feature 2 APK Feature 3 APK Один сценарий Instant App Module App Module com.android.instantapp com.android.application *.zip *.apk Base Feature Module com.android.feature App Module App Module com.android.application *.apk Собирает APK-файл устанавливаемого приложения .

Имеет прямые зависимости на все feature-модули проекта, если их несколько. Содержит код, не вошедший ни в один use-case Instant App .

App Module apply plugin: 'com.android.application' dependencies { implementation project(":feature1") annotationProcessor "com.google.dagger:dagger-compiler:${daggerVersion}" } Instant App Module Instant App Module com.android.instantapp *.zip Собирает все feature-APK проекта в один zip-архив, который и загружается в Google Play .

Имеет прямые зависимости на все feature-APK проекта, если их несколько. Сам не содержит ни кода, ни ресурсов .

Instant App Module apply plugin: 'com.android.instantapp' dependencies { implementation project(":feature1") } Base Feature Module Генерирует feature-APK - главную функциональную единицу Instant App .

Если в Instant App реализован один use-case - содержит все базовые классы проекта + весь код функционала, составляющего этот use-case (код бизнес-логики, отображения, ресурсы и т.д.) .

–  –  –

Один и только один .

Base Feature Module apply plugin: 'com.android.feature' android { ///.. .

baseFeature true } dependencies { application project(":app") annotationProcessor "com.google.dagger:dagger-compiler:${daggerVersion}" api "com.google.dagger:dagger:${daggerVersion}" api "com.android.support:appcompat-v7:${appcompatVersion}" api "com.android.support:design:${appcompatVersion}" //.. .





} Base Feature Module apply plugin: 'com.android.feature' android { ///.. .

baseFeature true } dependencies { application project(":app") ___ annotationProcessor "com.google.dagger:dagger-compiler:${daggerVersion}" api "com.google.dagger:dagger:${daggerVersion}" api "com.android.support:appcompat-v7:${appcompatVersion}" api "com.android.support:design:${appcompatVersion}" //.. .

} application project(':app') Instant App Module App Module implementation implementation project(':base-feature') project(':base-feature')

–  –  –

_Скачивается единожды_ За кулисами разработки Работа над пилотной версией Instant Apps для “Лабиринта” заняла 1 человеко-месяц Это было бы невозможно, без наличия в проекте выдержанной архитектуры .

Архитектура Архитектура может быть любой .

Просто соблюдайте это:

- Чёткое соблюдение однонаправленности вертикальных зависимостей;

- Отсутствие сильной горизонтальной связности .

Чем меньше компоненты одного слоя знают друг о друге, тем проще будет их разделить по модулям .

Навигация Навигация в “Лабиринте” Карточка товара

–  –  –

public void openProductPictures(int productId) { ProductPicturesActivityView.start(activityProvider.get(), id);

} } Навигация в “Лабиринте” @PerScreen public class FullNavigator extends Navigator {

–  –  –

public void openProductPictures(int productId) { ProductPicturesActivityView.start(activityProvider.get(), id);

} } Навигация в “Лабиринте”

–  –  –

public class BaseApp extends Application { public BaseAppComponent getBaseAppComponent() { return this.baseAppComponent;

} public NavigationModule createNavigationModule() { return new BaseNavigationModule();

} } Роль Application-классов public class FullApp extends BaseApp { public FullAppComponent getFullAppComponent() { return this.fullAppComponent;

} @Override public NavigationModule createNavigationModule() { return new FullNavigationModule();

} } Удовлетворяем зависимости DaggerCardProductComponent.builder().baseAppComponent(BaseApp.getBaseAppComponent(this)).navigationModule(BaseApp.createNavigationModule(this)).activityModule(getActivityModule()).build();

Полезные утилиты compile 'com.google.android.instantapps:instantapps:1.0.0' InstantApps.isInstantApp() InstantApps.showInstallPrompt() Размер сборки Один сценарий

–  –  –

Исключив неиспользуемые символы из шрифтовых файлов, мы сэкономили 350 Кб Анализ зависимостей Сторонние модули бывают очень “тяжёлыми”. Проверьте, нельзя ли сэкономить немного места наведя порядок в зависимостях проекта .

В первой версии было решено отказаться от экрана с картой изза “тяжёлой” зависимости Google Maps .

Точка входа Android App Links intent-filter xmlns:instant="http://schemas.android.com/instantapps" android:autoVerify="true" instant:order="1" action android:name="android.intent.action.VIEW" / category android:name="android.intent.category.BROWSABLE" / category android:name="android.intent.category.DEFAULT" / data android:host="www.labirint.ru" android:pathPrefix="/books/" android:scheme="https" / data android:scheme="http" / /intent-filter App Links Assistant App Links Assistant

Сгенерированный файл должен быть загружен на сайт и быть доступен по адресу:

–  –  –

Здесь же, в интерфейсе App Links Assistant можно автоматически протестировать доступность файла и корректность его содержимого. Последний этап валидации assetlinks.json произойдёт при загрузке сборки в Google Play .

"relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example", "sha256_cert_fingerprints":xxx] Crashlytics Issue Crashlytics Issue Crashlytics-плагин не генерирует com.crashlytics.android.build_id для feature-модуля. Его стоит добавлять туда вручную. А перед этим достать из релизной сборки полного приложения .

О чём нужно узнать как можно раньше

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

Android App Links https://www.labirint.ru/books/603113/

- Для организации точки входа в Instant App;

- Для перехода между фичами Instant App, если их несколько .

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Платежи только через Android Pay;

Никаких WebView

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Платежи только через Android Pay;

- Instant Apps имеет массу строгих ограничений;

Instant Apps не умеет:

- Принимать push-нотификации;

- Получать доступ к external storage устройства;

- Получать список установленных на устройстве приложений;

- Запускать Activity без UI;

- Получать идентификаторы такие как: Build Serial, Mac-адрес, IMEI, IMSI;

- Изменять настройки устройства;

- Работать с NDK. v.1.1.0 Не стоит пытаться обойти эти ограничения: в ходе ревью недобросовестные Instant Apps удаляются из Google Play .

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Платежи только через Android Pay;

- Instant Apps имеет массу строгих ограничений;

- И это еще не все ограничения;

Instant Apps не дружит с:

- Background Services;

- Broadcast Receivers, регистрируемые в манифесте приложения;

- Content Providers .

Запуск фоновых сервисов может приводить к необъяснимому возникновению ANR-сообщений в ходе работы с Instant App .

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Платежи только через Android Pay;

- Instant Apps имеет массу строгих ограничений;

- И это еще не все ограничения;

- Но не всё так плохо!

Поддерживаемые Broadcasts:

- AudioManager.ACTION_HDMI_AUDIO_PLUG

- ConnectivityManager.CONNECTIVITY_ACTION

- Intent.ACTION_POWER_CONNECTED

- Intent.ACTION_POWER_DISCONNECTED

- Intent.ACTION_AIRPLANE_MODE_CHANGED

- Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED

- Intent.ACTION_CONFIGURATION_CHANGED

- Intent.ACTION_HEADSET_PLUG

- Intent.ACTION_SCREEN_OFF

- Intent.ACTION_SCREEN_ON

- Intent.ACTION_TIMEZONE_CHANGED

- Intent.ACTION_USER_PRESENT

- KeyChain.ACTION_STORAGE_CHANGED

- Proxy.PROXY_CHANGE_ACTION

Поддерживаемые Permissions:

- BILLING;

- ACCESS_COARSE_LOCATION;

- ACCESS_FINE_LOCATION;

- ACCESS_NETWORK_STATE;

- CAMERA;

- INSTANT_APP_FOREGROUND_SERVICE (Android O);

- INTERNET;

- READ_PHONE_NUMBERS (Android O);

- RECORD_AUDIO;

- VIBRATE .

Поддерживаемые библиотеки:

- Fabric - Facebook

- ButterKnife; - Dagger;

Crashlytics; Login;

–  –  –

- Retrolambda; - RxJava; - Timber;

- Ограничение размера сборки - 4 Мб;

(валидация в Developer Console)

- Поддержка Android App Links;

- Работа с сетью только через HTTPS;

- Платежи только через Android Pay;

- Instant Apps имеет массу строгих ограничений;

- И это еще не все ограничения;

- Но не всё так плохо!

- = API 23 (де-факто 26) “Instant Apps now rolled out to 500 million Android devices” (Кроме твоего телефона) Подытожим Тщательно обдумайте use-case;

Проведите аудит текущего состояния кодовой базы и архитектуры приложения;

Прикиньте примерный объём каждого use-case и спроектируйте структуру проекта;

Проведите декомпозицию;

Поздравляю, впереди у вас увлекательные недели отладки .

СПАСИБО





Похожие работы:

«Учреждение образования "Белорусский государственный университет информатики и радиоэлектроники" УТВЕРЖДАЮ Проректор по учебной работе Е.Н. Живицкая 20.03.2017 Регистрационный № УД-5-686/р "Проектирование и разработка информационных систем" Учебная программа учреждения высшего образования по учебной дисциплине для специально...»

«Программное обеспечение Oscar Mouse Editor (Преимущество в игре) Руководство пользователя Модели: XL-771K, XL-755K, XL-740K, XL-730K, XL-750MK, XL-750BK, X-748K, X-738K, X-718K, X-710MK, X-710BK, X-70...»

«встраиваемые системы Микропроцессоры с функциональностью промышленных компьютеров Промышленные компьютеры получают широкое распространение в том случае, если проект требует высокой вычислительной мощности и слож ного пользовательского интерфейса на уровне ОС Windows или Linux. Но у них есть и не...»

«P13-2017-49 И. Н. Мешков ФОРМИРОВАНИЕ УПОРЯДОЧЕННОГО ПОТОКА ПОЗИТРОНОВ Работ а будет предст авлена на XII Международном научном семинаре памяти В.П. С ар анцев а, 2017 г., Алушт а, Крым, Россия Мешков И. Н. P13-2017-49 Формиров ание упорядоченного потока позитронов Предл агается метод формиров ания непрерывно...»







 
2019 www.mash.dobrota.biz - «Бесплатная электронная библиотека - онлайн публикации»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.