Как стать автором
Поиск
Написать публикацию
Обновить
129.25

Разработка мобильных приложений *

Android, iOS, Windows Phone и прочие

Сначала показывать
Порог рейтинга
Уровень сложности

ViewModel + Kotlin Multiplatform. Пробуем нативное решение

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K


Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать.

Для начала освежим, с чем же мы работали до ViewModels из Lifecycle.

Сами по себе ViewModel как часть паттерна MVVM применительно к кросс-платформенным решениям идея не новая. Многие давно использовали собственную реализацию, совмещая также с платформенными архитектурами.
Читать дальше →

Интеграция нативных SDK во Flutter-приложение

Время на прочтение9 мин
Количество просмотров4K

Мир мобильной разработки постоянно меняется. В поиске эффективных решений разработчики пошли по пути новых технологий и интеграций. Одним из самых ярких маяков на этом пути стал Flutter — набор инструментов пользовательского интерфейса от Google, который позволяет пользователям создавать нативно скомпилированные приложения для веб, mobile и desktop с единой кодовой базой.

Преимущество Flutter — в его возможности создавать приложения «похожие» на нативные. Это реально благодаря большому выбору настраиваемых виджетов, которые позволяют быстро создавать «нативные» интерфейсы. Но даже с такими широкими возможностями бывают случаи, когда приложениям Flutter необходимы определенные функции нативных SDK.

Читать далее

Кот в мешке: мастерство обработки ошибок внешних ключей SQLite

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.9K

Привет, меня зовут Тимур, я Android-разработчик в KTS.

Сталкивались с загадочными ошибками Foreign Key в SQLite для Android?

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

Читать далее

Рисуем эффект «Таноса» на Android (и не только)

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров9.7K

Привет! Вопрос мобильным разработчикам: часто ли вам приходится работать с необычным UI? Если вы ответили утвердительно, то я по-доброму вам завидую. В своей повседневной практике мне в основном приходится работать со стандартным набором компонентов и их базовой настройкой. Абсолютно ничего не имею против, но хочется чего-то «эдакого»: кастомных компонентов, написанных с нуля, необычных анимаций и эффектов. Часто подобные вещи вызывают много споров (как среди разработчиков, так и конечных пользователей) а-ля «А на кой оно вообще надо», но лично для меня это ни что иное, как творчество. Кто-то красиво рисует, кто-то красиво поёт, а кто-то пишет красивые уникальные приложения, которыми интересно и приятно пользоваться. И мы, пожалуй, не можем обвинять авторов за бессмысленность «украшательств», как по-хорошему не можем судить художника за его работу.

К чему я – спросите вы. Я отвечу: настраиваю на нужный лад :) В рамках этой статьи мы коснёмся полезной темы и создадим что-то бесполезное в практическом смысле, но несомненно интересное и достаточно уникальное.

Уже интересно

Ложь по спасение в попытке доказать, что клиент мамонт или как Тинькофф врет и ЦБ РФ и суду

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров49K

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

Так ЦБ РФ Тинькофф пишет

Читать далее

По граблям, по граблям. Пишем отзывчивый интерактивный виджет IOS 17

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.2K
image

Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. В 2023 году на WWDC Apple представили много нового и интересного API, среди которого были долгожданные интерактивные виджеты, реагирующие с помощью механизма AppIntent на нажатия и запускающие логику без переключения в основное приложение. Однако, как показывает практика, не все так просто и красиво, как Apple показывают на демонстрационных сессиях, а от беты до релиза что-то в API обязательно ломается или внезапно меняется.

Поэтому сегодня мы поговорим, как с помощью Widget Kit iOS 17 и AppIntent сделать виджет не только интерактивным, но и рабочим и отзывчивым в моменте, и обойти подводные камушки, оставленные разработчиками API. Рассматривать будем на примере самописного приложения для заметок TODO.



Для тех, кому не терпится, или кто хочет читать и смотреть код одновременно, сам код

Помимо обработки событий из самого виджета в таких приложениях также важно синхронизировать состояние между таргетами без потерь и задержек. Данные (наши тудушки и их состояние) мы сохраняем локально. Для этого используем инструмент для хранения данных SwiftData. Данный фреймворк также был представлен на WWDC 2023, и при его использовании в разных таргетах можно встретить тоже много подводных камней.
Читать дальше →

Деплой Flutter-приложений и особенности платформ

Время на прочтение8 мин
Количество просмотров4.3K

Всем привет! Меня зовут Александр Омельяненко, я Flutter-разработчик в AGIMA. Сегодня расскажу про релиз приложений в сторы. И поскольку работаю с кросс-платформой, речь пойдет как про Android, так и про iOS. Уверен, каждый участник команды должен понимать, что происходит с приложением, когда оно готово. Поэтому всё объясняю подробно: какие сторы использовать, каких подводных камней ожидать, что делать, если релиз отклонили.

Читать далее

Настраиваем кросс-обновления Android-приложений между сторами

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров6.3K

Привет, Хабр! Меня зовут Тимофей, я Android-разработчик в Сравни. Давайте поговорим о кросс-обновлении Android-приложений без привязки к конкретному стору – так, чтобы пользователи могли устанавливать из одного источника, а обновлять – из другого, без необходимости удалять и ставить заново.

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

Но первые реальные практические шаги в этом направлении мы сделали в формате
“А что, так можно было?”: пошли выкладывать приложение в RuStore и попутно обнаружили возможности использовать аналогичные механизмы для настройки кросс-обновления.

Так что там дальше?

Осознанная оптимизация Compose 2: В борьбе с композицией

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров15K

Jetpack Compose постоянно развивается, открывая перед разработчиками новые горизонты для оптимизации. С момента нашего последнего обзора, мы добились значительного прогресса, сократив задержки при скролле с 5-7% до нуля. В этом материале мы поделимся свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему, рекомендуем ознакомиться с первой частью.

Читать далее

Как работает async/await в Swift

Уровень сложностиСложный
Время на прочтение27 мин
Количество просмотров9.1K

Функция async/await в Swift появилась в iOS 15, и я полагаю, что на данный момент вы уже знаете, как ее использовать. Но задумывались ли вы когда-нибудь о том, как работает async/await изнутри? Или, может быть, почему выглядит и ведет себя именно так? Или даже почему вообще была представлена?

В типичной для SwiftRocks манере мы углубимся в компилятор Swift, чтобы ответить на вопросы о том, как работает async/await внутри. Это не инструкция по использованию async/await, а глубокое погружение в историю и реализацию этой функции, чтобы понять, как она работает, почему она работает, чего можно добиться с ее помощью и, самое главное, какие нюансы следует учитывать при работе с ней.

Читать далее

SmartFlow: «В начале был пароль...» или новая аутентификация VK ID

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров4.8K

Привет, Хабр! Исторически сложилось, что первым способом аутентификации (в 1960-х) с появлением доступных компьютеров стал пароль. О рисках его использования и об изобретённых человечеством альтернативах мы подробно рассказали в статье о будущем беспарольной аутентификации. Этот подход к проверке подлинности пользователя мы начали развивать с апреля 2022 года и развиваем по сей день.

Меня зовут Саша, я работаю Android-разработчиком в команде VK ID. Мой рассказ — про SmartFlow, новый процесс аутентификации ВКонтакте, нюансы его внедрения и отличия от старого процесса переключения факторов. Разумеется, рассказывать буду применительно к Android-платформе. 

Читать далее

О чем говорят руки. 2 место на соревновании Kaggle + код решения

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6K

Приветствую всех читателей! Меня зовут Артем Топоров, и сегодня я хочу поделиться с вами своим опытом участия в соревновании по распознаванию жестового языка, организованном компанией Google. На этом соревновании, собравшем 1139 команд со всего мира, нам удалось занять 2 место. Расскажу как мы вместе с Николаем Форратом и Xun Zhao разработали ML алгоритм для мобильных устройств, едва не заняли первое место и при чем тут спектрограммы. Вы можете использовать наш код, так как он распространяется под лицензией Apache 2.0.

Читать далее

Трагические микрозаймы, украденные креды: какие Android-зловреды мы обнаружили в официальных маркетах

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров4.8K
Один из основных принципов защиты мобильного устройства от киберугроз — загружать приложения только из официальных маркетов, таких как Google Play или Apple App Store. Однако несмотря на то, что софт проходит множество проверок перед публикаций, это не гарантирует, что пользователь не столкнется с фишинговым приложением или даже с банковским трояном.

image

Меня зовут Татьяна Шишкова, я — Lead Security Researcher в команде Глобального центра исследования и анализа угроз (GReAT) «Лаборатории Касперского». За более чем 25 лет существования компании мы выявили сотни и тысячи угроз, которые могут подпортить жизнь владельцам смартфонов. В этой статье я расскажу о тех угрозах для пользователей Android, которые мы с коллегами нашли в официальных Android-маркетах за последние пару лет: методы продвижения вредоносных приложений и способы обхода мер безопасности маркетов, новые семейства зловредов, которые попали в официальные и сторонние магазины приложений. Также мы рассмотрим способы обнаружения мобильных зловредов, в том числе банковских троянов, подписочных троянов, фишинговых приложений, методы защиты пользователя от них и многое другое.
Читать дальше →

Ближайшие события

Камера как сканер штрих-кодов: проблемы, инструменты и эксперименты

Время на прочтение14 мин
Количество просмотров6.8K

Всем привет, меня зовут Никита, я старший разработчик в компании Озон и работаю над iOS-приложением «Пункт Озон».

«Пункт Озон» — это мобильное приложение для работников и менеджеров пункта выдачи заказов (далее просто ПВЗ). В приложении множество различных разделов для повседневной работы. Самые популярные разделы — это «Приёмка», «Выдача» и «Инвентаризация», что в мобильной, что в web-версии. Именно они помогают выполнить главные задачи работников ПВЗ — принять заказы на баланс и позже выдать их клиентам.

Для скорости работы и защиты от ошибок работники ПВЗ производят эти действия через сканирование штрих-кодов, расположенных на самих заказах или на тарах, в которых они приезжают. Если брать web-версию, то там «все просто»: покупается нормальный/качественный отдельный сканер, подключается к ПК — и проблем, считай, нет. А вот с мобильным приложением дела обстоят немного не так. У смартфона есть только камера, и она явно не проектировалась под задачу «сканируем только штрих-коды». Но с другой стороны, камера делает фотографию, а раз у нас есть фотография, то можно там найти штрих-код. К счастью, Apple и Google предоставляют нам инструментарий для этого.

А раз я iOS-разработчик, то и рассказывать я вам буду о нашем iOS-приложении. И сегодня у нас в меню: 

с какими проблемами столкнулись пользователи при использовании мобильного сканера, и почему мы стали искать возможность его улучшения;

сравнение инструментов, которые предлагает Apple;

технический обзор одного из них;

история его внедрения в наше приложение и конечные результаты.

Читать далее

Опровергаю пять архитектурных заблуждений

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров26K

Привет! Я Алексей, iOS-разработчик в Тинькофф. Участвую в развитии архитектуры приложения, провожу собеседования и занимаюсь менторингом разработчиков.

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

Читать далее

Что ждёт мобильную разработку в 2024 году

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров12K

Привет! Меня зовут Таня Шашлова, я руковожу образовательными продуктами по мобильной разработке в Практикуме.

Чтобы обучать людей профессии и помогать им найти работу, нам важно понимать, как меняется рынок, поэтому мы с командой держим руку на пульсе — общаемся с разработчиками и интересуемся успехами студентов после выпуска. В этом тексте мы расскажем о нескольких трендах мобильной разработки и постараемся предугадать, как будет (и будет ли) меняться сфера в 2024 году.

Читать далее

Изи freestyle android приложения на Kivy (Python), Google colab и ваш не любимый ChatGPT

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров8K

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

Читать далее

Проект Альфа-Бизнес Mobile Web (веб-приложение), или Что делать если AppStore — всё?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.5K

Однажды мы решили переработать уже существующий адаптив интернет-банка для юр. лиц, а точнее превратить его в веб-приложение (Mobile Web) используя технологию PWA (Progressive Web App), с помощью которой сайт трансформируется в веб-приложение визуально и функционально. Далее для удобства буду использовать термин Mobile Web.

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

Читать далее

Направо пойдешь — в бэкенд придешь, налево — в мобилки…

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров11K

Размышляете, куда податься, какое карьерное направление будет перспективнее? Дело ведь не только в используемых технологиях, но и в распространенных подходах и практиках. И объективное сравнение от того, кто видел разные сегменты лично, встретишь не часто.

В этой статье наш коллега делится своими впечатлениями о том, чем отличается разработка бэкенда от мобилок на примере Android.

Читать далее

Кто ты, SwiftData

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров4.5K

Привет! Я Андрей Зонов, стафф-инженер в Тинькофф и большой фанат CoreData. Моя любовь в CoreData началась на старте карьеры, когда я попал в первый Enterprise-проект. Это были времена iOS 4.3., CoreData не имела parent-контекстов и методов perform. Как-то так сложилось, что за свою карьеру я много фиксил классические проблемы в CoreData, и с появлением SwiftData мне стало интересно, остались ли проблемы в SwiftData и что нам дает этот фреймворк. 

В статье разберем основные концепции и киллер-фичи по SwiftData. Пройдемся по основным отличиям и тому, как можно мигрировать с CoreData на актуальную SwiftData. Копнем внутрь SwiftData, узнаем, как она устроена под капотом, и подведем итоги стоит ли вообще переезжать на новый фреймворк Apple. 

Читать далее

Вклад авторов