Что такое instant apps

Новая технология от Google «Instant apps» – что это такое и как установить

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

Что такое Instant Apps?

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Что же конкретно собой представляет очередное нововведение, обладающее названием Instant Apps? В переводе с английского такое словосочетание означает «мгновенные приложения», что как нельзя лучше отображает суть работы данной функции. Как правило, перед использованием программного контента обладателю мобильного гаджета необходимо полностью загрузить соответствующий файл из магазина Google. Разработки, построенные по принципу Instant Apps, не являются неделимой системой, а состоят из большого числа самостоятельных модулей. Подобные автономные блоки не скачиваются все вместе, а быстро подгружаются по мере необходимости.

Основные преимущества

Что же дают эти новые Instant Apps? По словам специалистов из Google, данное обновление, доступное для ОС Android, способно полностью изменить современный подход к работе с различными онлайн-сервисами, значительно повысив удобство и скорость загрузки контента. Как правило, мобильная версия сайта не обладает достаточной гибкостью и функциональностью, которыми могут похвастаться специализированные утилиты. Но для их загрузки требуется время и трафик. В целом, технология Instant Apps обеспечивает следующие преимущества:

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

Установка программ

Ознакомиться со всеми возможностями новой функции от Google можно при помощи официального онлайн-магазина для Android. Любой пользователь данной платформы, обладающий поддерживаемой версией ОС, теперь в состоянии скачать пробный модуль любой утилиты с пометкой «Instant», чтобы протестировать ее на своем устройстве. Для этого потребуется выполнить следующую последовательность несложных действий:

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Чтобы получить полную версию контента, следует вернуться в магазин и выбрать опцию «Установить». После этого на рабочем столе вашего мобильного девайса появится иконка, предназначенная для постоянного доступа к программному продукту.

Подключение Instant Apps

Технология под названием Google Play services for Instant Apps работает абсолютно на всех современных смартфонах и планшетах, которые обладают ОС Android 6.0 и выше. Если вы являетесь владельцем более старших версий системы, вашему устройству потребуется перепрошивка до последнего доступного выпуска вышеописанной мобильной платформы. По умолчанию функции сервиса находятся в рабочем состоянии, в противном же случае их можно довольно быстро включить, выполнив следующие шаги:

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Выводы

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

Источник

Что такое Instant Apps и как пользоваться встроенной функцией Android

Развитие технологий за последние годы значительно расширило возможности смартфонов, и разработки компании Google с каждым обновлением Android радуют пользователей не только улучшениями, но и новыми опциями. Начиная с версии ОС Android 6.0, в функционале системы появилась возможность применения функции Instant Apps. Инновационное решение Гугл в виде встроенного в систему инструмента делает работу с Play Market гораздо комфортнее, к тому же решает проблему недостатка памяти на устройстве, что иногда является ключевым моментом при работе с приложениями на смартфоне.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Что это такое

Многие уже слышали о выходе в свет Instant Apps и даже знают, что это. Технология была представлена компанией Google в 2016 году, а со следующего года в магазине приложений начали появляться продукты, поддерживающие опцию, и за это всё время пользователи смогли оценить удобство её применения. Конечно, далеко не каждый знает, что это за программа и чем она полезна, поэтому рассмотрим подробнее, что собой представляет Instant Apps.

Функция позволяет протестировать приложение из Google Play Market без его установки, скачав всего лишь небольшой файл. Память устройства не безгранична, к тому же не все программы можно переместить на SD-карту, поэтому иногда даже приходится удалять установленное приложение, чтобы загрузить новое и ещё не факт, что оно действительно необходимо. Если продукт не понравился, не всегда его просто удалить, многие из них оставляют за собой кучу хвостов, пуская корни в системе, поэтому для полного удаления пакета и компонентов, идущих в нагрузку, часто требуется специальный софт. С Instant Apps эта проблема решена. Теперь, чтобы оценить ПО со всеми его возможностями не нужно при этом скачивать приложение на смартфон, занимая память устройства. Протестировав программу или игру, пользователь сможет решить для себя, нужно ли устанавливать полную версию продукта.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Принцип работы Instant Apps

В переводе Instant Apps звучит как «приложения с мгновенным запуском». Благодаря технологии вы существенно сэкономите время и оградите себя от ненужных действий по установке и удалению софта, в том случае, если продукт не пришёлся по душе. Пока не все приложения поддерживают опцию, ведь внедрение Instant Apps в каждое конкретное ПО зависит от его разработчиков. Так, при наличии поддержки функции на странице приложения в магазине Google Play Market вы увидите кнопку «Попробовать» рядом со знакомой «Установить», что означает возможность протестировать софт до установки. Нажатием данной кнопки скачивается маленький файл с демонстрационной версией продукта, который будет удалён после закрытия приложения.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Преимущества и недостатки технологии

Не все функциональные возможности Android приходятся по вкусу пользователям. Как и любое программное решение, Instant Apps тоже имеет и достоинства, и недостатки, потому для более чёткого представления об инструменте рассмотрим положительные и отрицательные стороны нового сервиса от Google.

Плюсы

Минусы

Как использовать Instant Apps

Функция Instant Apps является стандартной для Android и активна по умолчанию, но если устройством она поддерживается, а по какой-либо причине не включена, то сделать это просто:

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

Приложений, поддерживающих деморежим пока немного, но популярность Instant Apps растёт, и известные разработчики начинают внедрять функцию в свои продукты. Узнать, какой софт можно предварительно оценить с помощью опции просто – на его странице кроме кнопки скачивания имеется кнопка «Попробовать».

Как удалить или отключить

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

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

При наличии желания полностью избавится от Instant Apps, как и в случае с другими стандартными службами Google, для этого вам потребуются root-права. Только при открытии рут-доступа вы получаете возможность удалять любые системные компоненты на своё усмотрение.

Приложения с поддержкой мгновенного запуска

Если вы желаете воспользоваться опцией, но не знаете, где найти софт, поддерживающий Instant Apps, – загляните в магазин Google Play. Здесь уже появился новый специальный раздел «Мгновенный запуск», в котором собраны приложения, имеющие эту функцию. Пользователи устройств, работающих на Android Marshmallow и версиях новее, смогут оценить ПО без скачивания его в память девайса. Кстати, инструмент очень полезен в случае сомнений насчёт покупки платного софта, поскольку демоверсия позволит понять, стоит ли затрачивать средства на приложение. Так, вы сможете сэкономить не только время и ресурсы устройства, но и собственные денежные средства.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Источник

Что такое App Clips в iOS и зачем они нужны

На WWDC 2020 компания Apple представила App Clips. Рассказываем, что это такое и как дела с Android Instant Apps.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Несколько дней назад компания Apple представила очередную версию iOS на своей всемирной конференции для разработчиков WWDC, которая в этом году из-за коронавируса проходит в полностью виртуальном режиме. Одним из нововведений iOS 14 стали App Clips — мини-приложения, которые можно запускать сразу, без установки на устройство.

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

Кроме того, в Apple предлагают сочетать App Clips с функциями «Вход с Apple» (Sign in with Apple) и, разумеется, Apple Pay. Так исчезают еще два мучительных этапа, которые мешают быстро начать пользоваться приложением: регистрация в системе и ввод платежных данных.

Зачем могут понадобиться App Clips

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

Думаю, все мы когда-либо проходили мимо таких самокатов. Но мысль о том, как было бы приятно прокатиться, у многих быстро угасала от перспективы необходимых для аренды телодвижений.

В дивном новом мире App Clips все должно значительно упроститься. Вы сканируете графический код или прикладываете смартфон к NFC-метке. Мгновенно запускается мини-приложение, вы входите в него через Sign in with Apple, оплачиваете аренду через Apple Pay — и уезжаете на самокате в закат.

Разумеется, графический код или NFC-метка не обязательны и предназначены для взаимодействия с физическими объектами вроде внезапно попавшегося на глаза самоката или какой-нибудь уличной рекламы. В виртуальном мире тот же самый сценарий может стартовать после клика по ссылке.

Скажем, вы видите в поиске рекламу еды с доставкой, кликаете по ней, после чего мгновенно запускается соответствующее мини-приложение. Вы выбираете блюдо, оплачиваете через Apple Pay — и курьер уже спешит к вам.

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

Но что, если вы приезжаете в этот город лишь время от времени или вовсе попали в него проездом? Скорее всего, вам не захочется искать и устанавливать местное парковочное приложение, регистрироваться в нем, искать способ пополнить счет или привязывать карту оплаты. И тут снова придут на помощь мини-приложения — мгновенно запускаете, оплачиваете парковку через Apple Pay и идете по своим делам.

Что там у Гугла? Android Instant Apps

На самом деле идея, мягко говоря, не нова. Компания Google представила такую же концепцию мини-приложений для Android еще три года назад, на Google I/O 2017. В мире роботов это называется Android Instant Apps — «мгновенные приложения».

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

В обоих крупнейших магазинах приложений — что в App Store, что в Google Play — уже накопилось по несколько миллионов уникальных программ. Пользователям становится все сложнее искать конкретное приложение. А разработчикам — продвигать свои творения среди огромного количества аналогов.

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

Один из типичных сценариев использования Android Instant Apps — это максимально облегченные демоверсии игр. В виде «мгновенного приложения» пользователю предлагают, скажем, один уровень игры. Главное, что ничего не надо устанавливать — поиграть можно прямо здесь и сейчас. Ну а если захочется играть дальше — загрузить полную версию.

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

Безопасны ли «мгновенные приложения»?

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

Концепция мгновенного запуска всему этому противоречит. А что, если программа окажется опасной? Разумеется, мини-приложения загружаются из того же самого магазина, что и их полноценные версии. Но это не дает полной гарантии, что все пройдет гладко. В Google Play вредоносные программы обнаруживали множество раз.

И это не удивительно. Как уже было сказано выше, в магазинах Google и Apple хранятся миллионы уникальных программ, которые регулярно заменяют обновленными версиями. Распространенная практика среди злоумышленников — сначала загрузить «чистое» приложение, а вредоносные функции добавить в обновлении. На то, чтобы тщательно и регулярно проверять огромное количество программ, не хватит ресурсов даже у таких могущественных компаний, как Apple и Google.

Есть и еще одна проблема. Для работы Instant Apps используются специальные механизмы запуска, обходящие стандартную процедуру установки. Злоумышленники могут использовать несовершенство этих механизмов. В декабре 2019 года на хакерской конференции Chaos Communication Congress китайский исследователь RonnyXing представил доклад, в котором разобрал несколько практических вариантов атаки на мгновенные приложения.

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

Как держать Android Instant Apps под контролем

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

Также у нас есть хорошие новости. Мы придумали и недавно запатентовали технологию, которая позволяет защищать смартфон от вредоносных приложений с мгновенным запуском. Так что можете не переживать — просто установите Kaspersky Internet Security для Android, и вам будут не страшны ни обычные зловредные приложения, ни «мгновенные».

Источник

Google Play Instant. Рефакторинг длиною в жизнь

Когда ввязываешься в Early Access Program, никогда заранее не знаешь, что получится в итоге. Конечно, надеешься, что технология взлетит, а твое приложение опередит рынок и получит порцию пиара на Google I/O. И это неплохая мотивация, чтобы на начальном этапе вместо документации читать исходники, которые к тому же надо качать из секретного архива.

На AppsConf Евгений Сатуров показал, во что может вылиться участие в Early Access на примере разработки приложения с мгновенным запуском, по дороге поясняя все особенности Google Play Instant. В расшифровке его доклада разберёмся, откуда пошли Android App Bundles, при чём тут вообще Dynamic Delivery, познакомимся с новыми Gradle-плагинами, и узнаем, как быть с неожиданностями, которые приготовили для нас разработчики SDK.

О спикере: Евгений Сатуров (saturovv) работает в компании Surf, которая занимается заказной Android и iOS-разработкой, а с недавнего времени еще и разработкой на Flutter. Евгений Flutter-энтузиаст и основатель FlutterDevPodcast.

Краткий экскурс в историю

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Два года назад к нам в Surf пришел замечательный парень и говорит: «У нас есть технология, о которой пока мало, кто знает. А у вас есть заказчики и интересные кейсы. Давайте, мы дадим вам нашу технологию, вы ее куда-нибудь интегрируете, и получится классный симбиоз. Мы пропиарим это на Google I/O и всем будет хорошо».

На самом же деле, работа с Early Access Program — это кот в мешке. Приходится работать с сырым кодом, который, понятное дело, не всегда работает так, как задумано и описано. В нашем случае:

Все это стало возможным благодаря нашему постоянному партнеру — компании Лабиринт — крупнейшему интернет-магазину книг и канцтоваров в России. Они включились в проект, даже не будучи уверенными, будет ли какой-то бенефит в итоге. И тому, что в 2017 году Surf, как студия, была частью программы Программе Google Certified Agency. К сожалению, программу закрыли в этом году.

Android Instant Apps

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

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

У нас появились новые Gradle-плагины, которые генерировали соответствующие артефакты:

Но это было долго и дорого по ряду причин:

Но справедливости ради, внедрение Instant App в Лабиринте дало 5% прироста к покупкам через мобильный клиент.

2019. Google Play Instant

Прошло два года, на дворе 2019 — Instant Apps все еще существует, но не как самостоятельная технология. Она до сих пор очень редко встречается в продакшене, я не искал специально, но знаю только несколько примеров: это Sports.ru, Vimeo. Вряд ли Google рассчитывал на такой результат, когда анонсировал эту технологию.

Теперь Instant App называется иначе — Google Play Instant. Смена названия помогла отсеять неактуальную документацию. Если видите Android Instant App, сразу понятно, что это уже неактуально.

Кроме названия сменилось и все остальное, в том числе модульная структура. Требования стали более лояльными. Технология совершенно по-другому интегрируется в проект и не требует столь болезненного рефакторинга, что, безусловно, хорошо.

Но что менее очевидно и на мой взгляд гораздо более важно — эта технология, так и оставшись очень нишевой и редкой, стала прародителем целого семейства технологий, в составе которого теперь поставляется.

Изначально Google позиционировал Instant App как технологию, которая привлекает людей в бизнес, не в приложения. Был design-guideline, который запрещал делать лэндинг-приложения с одной кнопкой «Скачать полное приложение». Но побочно была решена другая фундаментальная проблема, и подозреваю, это произошло случайно.

В феврале этого года свет увидело замечательное устройство Samsung Galaxy S10+ с 1 Тб памяти на борту. Только вдумайтесь — один терабайт! Зачем столько нужно?!

Согласно официальной статистике Google, за последние 7 лет средний размер APK увеличился в 5,5 раз.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Размер сборки действительно имеет значение, исследование этой статистики показывает:

Последние все сложнее игнорировать, потому что в 2018 году именно Индия показала невероятный прирост по установкам.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Обратите внимание, там совсем мало iOS, а суммарное количество установок Android-приложений превышает таковое в США, Бразилии и Индонезии вместе взятых.

Теперь понятно, какую проблему можно решить при помощи Google Play Instant. Можно переходить к непонятным терминам.

Android App Bundle

Android App Bundle — новый формат публикации приложения в Google Play. Внутри все не сильно отличается от APK: все те же самые dex-файлы, manifest, resources, assets и т.д. и т.п. Но есть еще Metadata, которая не попадает на устройство пользователя.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Metadata представлена тремя файлами: resources.pb, assets.pb, native.pb. Фактически это таблицы соответствия ресурсов, которые есть в сборке, и конфигурационных настроек устройств.

Android Dynamic Delivery

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

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

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Однако, если вы не отдадите релизный ключ в Google Play, то не сможете применить в своём проекте ничего из того, о чем дальше пойдет речь. Google закручивает гайки, и даже Instant App, не отдавая ключ, теперь задеплоить не получится.

На самом деле это совсем не смешно, потому что люди, которые купились на промоушен Instant App и влезли во всю эту историю, отрефакторили свои приложения, но по каким-то причинам не могут отдать свой ключ в Google Play (либо отдел безопасности категорически против, либо по другим объективным причинам) оказались в ситуации, когда они дальше не могут поддерживать это решение. Сотни часов работы фактически оказались выброшенными на помойку.

2014. В Android Lollipop появляется поддержка Split APK

Раз мы сегодня ностальгируем, вернемся еще раньше в прошлое — в 2014 год.

До сих пор помню, как на мой NEXUS 5, лучший телефон на свете, прилетела сборка Android Lollipop c невероятным material-дизайном, который выглядел просто бомбически. Но были изменения, которые остались для многих незамеченными — это поддержка Split APK.

Split APK — механизм, который позволяет разбивать приложение на маленькие APK и, устанавливая на одно устройство, заставлять их вести себя как единое приложение.

Запомните это, и пойдем дальше.

Android Dynamic Delivery — это новый формат дистрибуции приложений в Google Play.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Был у нас раньше APK, теперь появляется еще Android App Bundle, пока что как альтернатива. AAB выступает инкубатором-генератором этих самых Split APK. AAB выкатывает банч APK, которые дальше можно использовать как обычное приложение, установив их параллельно.

Разберемся, что это за APK.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Как минимум, это базовый APK, который играет ту же самую роль, что и в Instant App: это базовый код, базовые ресурсы и бизнес-логика, которая шарится между всеми фичами.

Кроме того появляются:

Теперь такой механизм позволяет получать пользователю только тот набор ресурсов, который нужен конкретно для его устройства. Человек приходит в Google Play, выбирает приложение, Google Play понимает характеристики устройства пользователя, и отдает тот набор Split APKs, который нужен — по одной APK из каждой категории.

Типы Dynamic Delivery APK:

Прощай, Split

Вы можете возразить, что и раньше можно было делать что-то подобное, вручную генерируя кучу APK только с нужным набором ресурсов, потом это все вручную деплоить в Google Play.

Сама по себе эта затея достаточно сомнительная, а теперь все это просто игнорируется. Если вы собираете Android App Bundle, появляется блок Bundle, который позволяет отключать вручную разбиение проекта по одной из категорий.

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

Самые внимательные, наверное, сейчас думают о том, что же делать с preLollipops. Только в Android 5 появилась поддержка Split APK. Из этой ситуации надо как-то выходить, потому что Min SDK еще далеко не у всех 21-й.

Для preLollipops из ситуации выходят достаточно топорным, но единственно возможным образом. Google Play собирает Multi-APK для preLollipops, которые включают в себя всевозможные комбинации конфигурационных APK. APK в итоге один, но его вариантов очень много.

Android App Bundle меняет нашу жизнь

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

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

Не будем показывать пальцем — в топе российского Google Play есть приложения, у которых релизные ключи уже давно на 4PDA, все кастомные сборки подписаны релизным ключом, и в ближайшие лет пять с этим ничего не сделать. Остается ждать перехода на Signing V3, который появился только с 28 API.

Безусловное преимущество Android App Bundle: пользователи перестают расходовать трафик и место на диске на ненужные им ресурсы. Это очень повышает retention приложения.

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

Dynamic Feature Module

Dynamic Feature Module — это функциональный модуль, который не поставляется при установке приложения, а докачивающийся из Google Play и устанавливающийся только по требованию.

Такие модули встают на один уровень с базовым APK.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

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

Области применения Dynamic Feature Modules:

Фичи, используемые очень малым процентом аудитории, но, тем не менее, важные для вашего продукта. Например, это контентное развлекательное приложение, и 95% его пользователей потребляют контент. Но есть очень маленький процент редакторов, которые контент генерируют. Для них есть крутой видеоредактор, который весит реально много, работает невероятно круто. Тогда не имеет смысла утяжелять сборку для всех и каждого, можно вынести эту фичу в Dynamic Feature Module, и предоставить её только тем, кому она нужна, докачивая ее уже потом.

Тяжёлые фичи, не относящиеся к основному сценарию использования приложения. Например, AR-навигация в картографическом сервисе. Любая AR-фича самое то, чтобы вынести ее в Dynamic Feature Module.

Фичи, которые должны быть доступны пользователям без установки самого приложения (например, выбор товара в каталоге и оформление заказа). Верно, это что-то очень подозрительно все напоминает.

Android Instant Apps — это теперь Instant-Enabled Dynamic Feature Module.

Таким образом получается, что есть два типа Dynamic Feature Modules:

Такое часто можно встретить в разделе с играми. Это удобно и даже более применимо, чем к приложениям, потому что можно скачать маленький кусочек игры как демку и посмотреть, что это вообще такое, стоит ли тратить свой трафик и время.

Модульная структура

Я уже говорил, что модульная структура упростилась. Посмотрим, как именно.

Изначально у нас была достаточно монструозная структура. Среди прочего в ней были пустые модули, например, Instant App Module всегда был пустой, в нем не было ни кода, ни ресурсов, а только файл build.gradle и все.

Разработчики подумали, зачем тогда плодить лишние модули только для того, чтобы собирать артефакты определенного типа. И выпилили его, а функциональность перенесли в App Module.

Но потом они пошли еще дальше и подумали — зачем нужен Base Feature Module? От него одни проблемы, потому что мы инициализируем там все, а у него Application ID другой. Отсюда идут костыли, например, передача Application ID из App Module в Base Feature Module, и подстановка его как настоящего Application ID приложения, чтобы все трекалось в Crashlytics и т.д.

В итоге получилось так.

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Оставили App Module, к нему сверху приделали Feature Modules — и всё!

Не передать мои эмоции, когда я об этом узнал. Ребята с большой сцены заявили, что у них есть классная технология: «Давайте все перепиливать приложения под эту структуру!» Но это не работа на 5 минут, а работа с большими последствиями.

В 2017 году иметь монолитное приложение было еще не стыдно. Лабиринт был именно таким, он тогда даже еще не вышел в публичный релиз, а был в бете. На момент, когда мы ввязались в Early Access Program, там уже было порядка 90 экранов. Мы потратили два дополнительных месяца на то, чтобы это все отрефакторить, протестировать и убедиться, что все действительно работает.

И после этого они говорят: «Мы перемудрили, можно гораздо проще сделать».

Но вернемся к прозе.

Конфигурация Gradle-файлов

Для того, чтобы поддержать новую конфигурацию, нам нужно сперва в файле build.gradle app-модуля в блоке Android перечислить все Dynamic Feature Modules:

После этого в build.gradle файле каждого Dynamic Feature Module прописать зависимость на app-модуль:

В принципе, ничего сложного. Но есть еще конфигурация манифестов.

Конфигурация манифестов

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

Кроме того, есть еще конфигурация манифеста каждого Dynamic Feature Module в отдельности, в котором больше настроек:

Первые два флага немножко взаимоисключающие, потому что onDemand — это обычная базовая фича, а instant — это та самая Installable фича.

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

Параметр include — параметр для preLollipops. Если установить его значение false, то пользователи preLollipops никогда эту фичу не увидят и не смогут ей воспользоваться.

Конфигурация Gradle-projects

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

Теперь остался только один Dynamic Feature Module, который мы и используем:

Конфигурация проекта только в app-модуле

Важный момент: все настройки, касающиеся подписи (signing-конфигурация), сборки (ProGuard-конфигурация), versionCode и versionName нужно делать только в build.gradle app-модуля.

Иначе, они будут проигнорированы. Избегайте указания какого-либо из этих конфигурационных блоков в build.gradle-файлах dynamic feature-модулей.

Google Play Instant

Сейчас мы имеем следующее.

Требования к модульной структуре максимально упростились. Это действительно хорошая новость для тех, кто в это пока не ввязывался. Теперь можно попробовать, даже если у вас приложение со своей принципиальной структурой. Это совершенно не повлияет, вы можете просто приделать модуль сверху, и все будет хорошо работать.

Ограничения на размер сборки стали лояльнее. Если раньше было 4 Мб, то теперь:

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Это реальный кусок кода из Chrome под Android, который перехватывал ссылку на ваш Instant App, шел в Google Play и подставлял оттуда Instant Apps. Если Instant App обнаруживался, он вам каким-то образом открывал activity, из которой потом запускался Instant App.

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

Play Core Library позволяет забыть о проблемах доставки. Вы просто подключаете ее как пакет:

И загружаете нужные вам feature-модули из Google Play.

У библиотеки достаточно функциональный синтаксис, который позволяет скачивать модули поодиночке:

Или сразу пачкой по несколько:

Показывать это в UI и реагировать на то, что модуль был установлен.

Play Core Library — хорошее начинание:

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

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Но тогда теряется вся выгода от разбиения на модули. Мы перешли к модулям задолго до того, как возникла необходимость решать такие проблемы. И сделали это отчасти потому, что это упрощает работу с кодовой базой для неопытных разработчиков, которые по неопытности могут с base-activity обратиться к signing-activity — потом ищи это на код-ревью.

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

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

Plaid — это один из самых крутых шоу-кейсов, с ними Google пробует все свои самые последние тенденции, крутые анимации, дизайн-приемы, последние UI-компоненты и, в частности, модульность.

Много, действительно много багов, недоинжиниринга, шероховатостей. Искать баги особо долго не придется.

Разработчики советуют: добавить в иерархию feature-модуль, в котором нет ничего, кроме зависимости на стороннюю библиотеку, и сделать на него зависимости от двух исходных feature-модулей.

Наконец, после того, как вы и это преодолеете, вы обнаружите, что…

Dynamic Features всё ещё в Beta! Вы не можете задеплоиться в продакшен — вы всё это время были бесплатным тестировщиком для Google!

Что такое instant apps. Смотреть фото Что такое instant apps. Смотреть картинку Что такое instant apps. Картинка про Что такое instant apps. Фото Что такое instant apps

Но не по мнению Google. Если вы хотите им стать, то можете заполнить Interest Form и, быть может, вам повезет и вам дадут доступ задеплоиться в продакшен.

Есть мнение, что Instant Apps проиграл эту битву. Вряд ли об этом объявят в ближайшие годы, но повышенная информационная активность вокруг AMP негласно это подтверждает.

Мысль, которую я хотел напомнить вам и себе самому — пишите для людей. Трижды подумайте, прежде чем принять какое-то решение, особенно, если занимаетесь разработкой средств, которыми будут пользоваться другие разработчики. Каждое ваше решение и действие скажется на ком-то и, возможно, попортит ему немножко крови. Не хотелось бы стать причиной расстройства для кого-то.

Полезные ссылки

Мы сделали программу Saint AppsConf, которая уже 21-22 октября в Санкт-Петербурге, еще более насыщенной и разнообразной, чем она была весной. Check it out!

Или подпишитесь на рассылку, telegram, fb — там рассказываем об отдельных докладах и подготовке к конференции.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *