- Интеграция Compose в существующий проект Android
- 12 лучших фреймворков для разработки приложений под Android
- 1) Corona SDK
- 2) Phonegap
- 3) Xamarin
- 4) Sencha Touch 2
- 6) Basic4Android
- 7) JQuery Mobile
- 8) Dojo Mobile
- 9) Sproutcore
- 10) Theappbuilder
- Как выбрать мобильную кросс-платформу в 2021 году
- Познакомимся с Женей
- Прогрессивные веб-приложения
- Android — Сontinuous Integration. Часть 1
- Что имеется:
- Что хотим получить:
Интеграция Compose в существующий проект Android
Всем привет, я Android разработчик в компании Enaza подразделения Games, которая занимается дистрибуцией ключей для игр. В данном посте опишу опыт интеграции Jetpack Compose в существующий проект.
Проект: лаунчер мобильных игры по подписке.
Проект представляет из себя мобильное приложение написанное на Kotlin с использованием многомодульной архитектуры в качестве DI был использован Dagger Hilt, в качестве навигации был выбран frag-nav за свою гибкость открытия фрагментов из любой части приложения.
В данном опыте цель пере использовать дублирующиеся фрагменты дизайна интерфейса, а именно:
1. Карточка игры, использующаяся в личном кабинете в разделе игры, в поиске и каталоге
2. Экран активации промо кода, новый функционал, который зашел в приложение + он сам по себе не большой в верстке
Для начала нужно импортировать библиотеки compose через gradle
Для разделения ответственности модулей, работу с компонентами Compose вынесену в отдельный модуль под названием compose-component в котором будут содержаться UI элементы, цвет, шрифты и screen @Composable контейнеры для отрисовки окон интерфейса приложения собранного из разных UI компонентов кнопочек, полей ввода, текста.
Рассмотрим Color.kt который содержит в себе цвета использующиеся в приложения
Shape.kt используется в Modifier для закругления границ UI элементов
Type.kt содержит в себе шрифты с сопутствующими настройками для отображения текста в интерфейсе
PromoCodeUI.kt это screen окна активации промо кода включающий в себя две @Composable функции для состояния экрана активации с вводом промо кода и успешной активации
Button.kt файлик с кнопочками использующиеся в проекте
StateDownload enum class опрделяющий состояние кнопки в карточке игры
PromoCodeState data class хранящий в себе состояние валидации введенного промо кода.
В функции PromoCodeContentPreview() вывожу на preview экран ввода промо кода, то как он бы выглядел при запущенному эмуляторе или устройстве.
var promoCodeInput by rememberSaveable
отличительной особенностью от remember является, что Saveable хранит в себе состояние введённого значения при перевороте экрана.
Начнём первую интеграцию, подружим fragment с @Composable функцией
для отображения ранее написанных screen в методе onCreateView фрагмента используем ComposeView(context: Context)
Теперь попробуем все списки RecyclerView использующиеся в проекте пере использовать, для этого возьмем источник данных UI это будет Adapter, если ранее для отображения элемента списка в методе onCreateViewHolder делали inflate layout то теперь здесь будем передавать compose view holder
во ViewHolder класса ComposeCardItemViewHolder в блоке init для корректной работы жизненного цикла item очищаем их при помощи установки стратегии ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed при удалении view очищаем item с данными.
Итоговый результат представлен на видео фрагменте
В методе bind класса ComposeCardItemViewHolder ранее было присваивание элементам интерфейса значений, теперь стало проще с compose передаём в @Composable функцию данные модельки и происходит отрисовка соответствующего контента.
Заключение: в итоге интеграция Compose в существующий проект занимает не так много сил, как это ожидается. Желаю всем попробовать и у себя в проекте применить методики compose, начинать нужно с малого.
Примечание: мой первый опыт публикаций статей на Habr.
Источник
12 лучших фреймворков для разработки приложений под Android
Android – прекрасная платформа для мобильных устройств, она работает на миллионах смартфонов в 200 странах по всему миру. В этом посте я собрал несколько популярных фреймворков для разработки приложений под Android, из числа популярных среди разработчиков.
Смысл фреймворка – увеличить производительность, уменьшив затраты усилий на разработку. В идеале они экономят разработчикам время на то, чтобы заняться реально важными при разработке приложения вопросами.
1) Corona SDK
Богатый инструментарий для создания игр и приложений за рекордно короткое время
Обеспечивает возможность очень быстрой разработки. Элегантный API упрощает добавление сложных функций, технологический процесс позволяет сразу же видеть внесённые изменения, сама же разработка идёт на Lua – простом для изучения языке. Всё это приводит к рекордной скорости разработки.
Самый популярный фреймворк, часто используется разработчиками игр, но подходит для любого рода приложений. Уже более миллиона разработчиков пользуются API, поддержкой нативного интерфейса, встроенным движком и рекламной платформой.
2) Phonegap
Простое создание приложений при помощи веб-технологий.
Использует HTML5, CSS и JavaScript. Спонсируется Apache и Adobe. Версия 2.0 предлагает поддержку Windows phone, новых библиотек и функций CLI. Для вставки кода в крупные приложения используется инструмент Cordova WebView
3) Xamarin
Для этого фреймворка код можно писать на С#. Также он работает в iOS и Windows. Поддерживается тестирование приложения в облаке.
4) Sencha Touch 2
Идеальная платформа для разработки и управления безопасными бизнес-приложениями, работающими на разных устройствах. Разработка ведётся на JavaScript и HTML5. Встроенная система MVC, 50 различных встроенных компонентов, система управления разработкой. Имеется бесплатная функция публикации приложения в Google Play.
5) Appcelerator
Разработчики утверждают, что в мире работают два миллиарда приложений, созданных на этом фреймворке. Частью фреймворка является Titanium SDK, который поддерживает разработку на языке JavaScript
6) Basic4Android
RAD (быстрая разработка приложений) и наличие своего IDE. Разработка ведётся на простом языке программирования, напоминающем Visual Basic.
7) JQuery Mobile
JQuery, заточенный под работу с сенсорными экранами. Помогает разработчикам строить сайты с отзывчивым дизайном и приложения, работающие как на десктопах, так и на планшетах и смартфонах.
8) Dojo Mobile
Фреймворк для создания приложений на базе HTML5 + JavaScript, помогающий реализовать быструю разработку мобильных приложений для Android и iOS. Присутствует набор форм, MVC, и симпатичные темы приложений.
9) Sproutcore
MVC-дизайн, оптимизация быстродействия и забота о расширяемости приложений.
10) Theappbuilder
Основан на HTML5. Предлагает простой drag and drop интерфейс без написания кода, что позволяет очень быстро разрабатывать приложения. Особое внимание уделяется интеграцией с соцсетями и прямая отправка приложений в Google Play.
11) DHTMLX Touch
Библиотека на основе AJAX и JavaScript, предназначенная для создания виджетов и приложений на основе HTML5.
12) Mo Sync SDK
Поддержка HTML5, JavaScript, C++ и 9-и различных платформ. Также возможно сопряжение с PhoneGap. Для отладки предлагается эмулятор под названием MoSync Reload.
Источник
Как выбрать мобильную кросс-платформу в 2021 году
Кросс-платформенные решения — тренд в мобильной разработке. Уже есть различные технологии от PWA до Flutter и Kotlin Multiplatform. Как выбрать среди них?
Новый развивающийся бизнес зачастую в первую очередь ориентируется на мобильные технологии: социальные сети, необанкинговые решения, приложения для электронной коммерции, такси и другие. Новый бизнес ориентирован на экономическую эффективность, поэтому переход на кросс-платформенность для разработки мобильного приложения кажется правильным выбором. Посмотрим, что будет в 2021 году и как выбрать правильную технологию.
Познакомимся с Женей
Евгения — солюшн-архитектор. Она должна решить, как построить новое мобильное приложение для изучения английского языка не носителями: людьми из Турции, Италии или России. Давайте посмотрим, как Женя подходит к этой задаче.
Приложение должно включать в себя богатую анимацию, уметь воспроизводить и записывать аудио, показывать видео с субтитрами, а также статические и динамические изображения.
В компании — владельце приложения также ожидают, что разработкой будет заниматься единая команда — как для Android- и iOS-приложений, чтобы свести к минимуму усилия по передаче знаний и максимизировать скорость команды. В будущем также планируют запустить веб-приложения. А еще в компании хотели бы упростить будущий найм.
Прогрессивные веб-приложения
Женя начинает свои исследования. Она гуглит «мобильные веб-приложения» и находит статью. В ней упоминаются «Прогрессивные веб-приложения» (PWA). Что это такое?
Прогрессивные веб-приложения — это, по сути, веб-сайты, которые используют специальные API для доступа к определенным возможностям устройства. Эти API позволяют получить доступ к памяти на устройстве, интегрируются с Push Notifications (на Android) и, что самое важное, работать в отдельной вкладке браузера. Еще их можно установить на устройство «иконкой», как настоящее приложение. Звучит неплохо! Давайте посмотрим на плюсы и минусы PWA:
Источник
Android — Сontinuous Integration. Часть 1
Не буду описывать в сотый раз что такое CI и зачем это нужно. Выдумщиком данной концепции считается, не безизвестный, Мартин Фаулер, а с его трудом можно ознакомиться здесь.
Я же хочу в серии из нескольких статей рассказать о том, как организовать разработку Android приложений с использованием непрерывной интеграции. Для меня было неожиданностью, что несмотря на всю популярность CI, в интернете до сих пор не существует подробной инструкции, по шагам, для новичков, даже на английском языке, не говоря про русский (ну или я таких попросту не нашел).
В первой статье цикла мы обозрим сложившуюся унылую ситуацию и набросаем план действий по спасению — то что ожидаем получить в конце и ради чего все затеваем. А затем, постепенно, начнем это воплощать в жизнь. Кого заинтересовал, прошу под кат.
Я буду рассматривать все примеры на следующем наборе инструментов/технологий, хотя это не принципиально и, например, GIT может быть легко заменен на Mercurial, а TeamCity на Jenkins:
VCS — GIT
Testing — Emulators, Android Instrumentation Framework, JUnit, Robotium, Robolectric, Mockito
Building — Maven + android-maven-plugin
IDE — IntelliJ IDEA
Хранилище артефактов — Nexus
CI server — TeamCity
Что имеется:
Итак, исходные коды проекта лежат в GIT-репозитории, там же хранятся необходимые библиотеки, все участники проекта коммитят в одну главную master-ветку, оттуда же собираются сборки для релиза. Понятие о тестах отсутствует, сборка осуществляется средствами IntelliJ IDEA: Tools -> Android -> Export Signed Application Package. Собранные артифакты между участниками процесса распространяются по почте, скайпу и прочему. Подготовка очередной релизной версии может занимать до нескольких часов: переключение файла конфига, изменение номера версии в приложении, коммит релиза в репозиторий, создание тега с номером версии на коммит, последующая проверка, что все собрано как надо, приложение смотрит на нужный сервер и подписано необходимым ключем и прочее. И несмотря на все проверки и меры предосторожности не стоит забывать о человеческом факторе.
Что хотим получить:
Исходные коды по прежнему лежат в GIT 🙂 Модель ветвления веток в репозитории организована в соответсвии с данным трудом и этим замечанием, помогающем учесть фазу тестирования и исправления найденных ошибок. (В дальнейшем это позволит нам проще настроить TeamCity, да и вообще существенно облегчит разработку, подготовку к релизу и дальнейшую его поддержку). Зависимости автоматически поддтягиваются из Nexus во время сборки. Сборка возможна двумя вариантами:
- через IDE, с возможностью подключения дебага и создания различных run-конфигураций средствами IDEA (удобно при локальной разработке, для быстрого запуска отдельных тестов и т.д.)
- maven’ом, в один клик или полностью автоматически
Проект состоит из трех модулей:
- Root — корень проекта содержит два других вложенных модуля
- App — модуль с приложением. Помимо самого приложения, содержит JUnit и Robolectric юнит-тесты (вкратце — Robolectric, библиотека позволяющая запускать Android код в настольной JVM, что существенно ускоряет тестирование в отличие от варианта с Instrumentation тестами).
- Test — модуль с интеграционными тестами. Тесты написаны либо с использованием стандартных средств платформы для тестирования (Instrumentation Framework), либо с использованием Robotium.
Build-скрипт для maven позволяет собирать приложение в трех конфигурациях: development , test и production , различиющихся соответсвующими настройками (адреса серверов, задержки и таймауты, debug-флаг и т.д.). Во время сборки запускаются юнит- и интеграционные тесты.
CI-сервер осуществляет следующие сборки:
- Development — на каждый пуш в develop ветку. Цель сборки — максимально оперативное выявление ошибок типа «забыл закоммитить файл, проект не собирается у других участников команды».
- Nightly build — сборка всех трех конфигураций с нуля и прогон тестов
- UAT — сборка, собирающая релиз кандидаты в ходе тестирования и исправления найденных багов
- Release — релизная протестирования сборка для выкладывания в маркет
На каждую успешную UAT или Release сборку в репозитории создается тег вида rcX.X.X-X или vX.X.X соответсвенно. Если билд завален: не компилируется, сломана часть тестов и т.д. — отправляется письмо с алярмой заинтересованным лицам.
Готовые артефакты для тестирования или деплоя в продакшн участниками проекта забираются только с CI-сервера, никакой пересылки вручную. Не нужно задумываться о файле с конфигами проекта или создании тегов в репозитории все происходит «само». Время на подготовку и сборку нового релиз-кандидата для тестирования или релизной версии — 2-5 минут.
Источник