Мобильная разработка
13.9K subscribers
860 photos
237 videos
2.96K links
Актуальное по мобильной разработке — Android, iOS, кроссплатформа

Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/oVBP
Download Telegram
Swift на Android: создаём библиотеку

Привет, хабр!

Поддержка Android в Swift 6 и swift-android-sdk от finagolfin это настоящий прорыв, который наконец-то позволил мне выпустить JNIKit, который я разрабатывал для проекта SwifDroid ещё со времён Swift 5. Теперь мы можем просто import Android, вместо того чтобы возиться с ручным импортом NDK header'ов, а сборка конечных бинарников теперь обеспечивается не отдельным тулчейном, а минималистичной SDK, которую в скором времени сделают официальной на Swift.org.
Читать далее

Читать: https://habr.com/ru/articles/946224/

@a_cup_of_java | Другие наши каналы
Как мы сократили время доставки кода в 40 раз, или Непрерывная поставка в действии

Как сократить доставку кода в 40 раз: опыт CI/CD

Читать: https://tprg.ru/Fhe4

@mobi_dev | Другие наши каналы
🌚4
Станислав Петров: «Ключевые отличия РЕД ОС М от Android – вовсе не в интерфейсе»

Мобильную операционную систему РЕД ОС М устанавливают на все большее количество смартфонов и планшетов, а уже в 2026 году ожидается, что на РЕД ОС М будут работать десятки тысяч производимых в Подмосковье мобильных девайсов Passion. И, разумеется, все хотят задать разработчикам самые неудобные и каверзные вопросы. О том, как развивается ОС, чем она отличается от “перекрашенного Android”, а также о перспективах российских смартфонов и сравнении с продуктами Google и других вендоров рассказывает Станислав Петров, руководитель группы разработки мобильной ОС компании РЕД СОФТ.
Узнать, в чем отличия РЕД ОС М

Читать: https://habr.com/ru/companies/redsoft/articles/946516/

@a_cup_of_java | Другие наши каналы
👎14👍1
Generic'и и protocol'ы в Swift

Привет, Хабр! В прошлых статьях мы говорили про ARC и управление памятью в Swift, но обошли стороной ещё одну сильную сторону языка. Речь идёт о generic'ах и протоколах - именно они делают Swift таким чистым и мощным. В этой статье мы разберёмся, как они работают и почему без них невозможно представить современный Swift.
Читать далее

Читать: https://habr.com/ru/articles/946600/

@a_cup_of_java | Другие наши каналы
👍4
Не одним CRDT едины или как решать конфликты в local-first приложениях

Сегодня поговорим про реализации решения конфликтов подходов local / offline-first – это когда ваше приложение позволяет пользователям работать полностью или частично оффлайн, а когда они выходят в сеть, синхронизировать все их изменения.

Примеры таких приложений: Notion-like редакторы, Figma-like вайтборды или Linear-like таск менеджеры.

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

Читать: https://habr.com/ru/articles/946722/

@a_cup_of_java | Другие наши каналы
3🗿1
Разработка Pipes Counting: от идеи до публикации

Pipes Counting — технический разбор (мобильная разработка + ML)

Приветствуем вас, дорогие читатели! В этой статье мы, ученики 10 класса из школы "Летово", хотим поделиться своим опытом разработки мобильного приложения PipesCounting, созданного для автоматизированного подсчета труб в пачке. За 6 месяцев мы прошли путь от идеи и до публикации приложения, в том числе сбор и расширение датасета, обучение моделей и сборки приложения. Здесь мы хотим поделиться нашим опытом и трудностями с которыми мы столкнулись, чтобы облегчить процесс для тех, кто будет заниматься чем-то похожим, рассказать о возможных подходах и предупредить о сложностях.

С приложением PipesCounting мы заняли второе место в престижном международном конкурсе AI Challenge в категории “Металлургия”, а также постели с ним международную конференцию AI Journey.
Читать далее

Читать: https://habr.com/ru/articles/946758/

@a_cup_of_java | Другие наши каналы
👎4👍1
Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#21)

Продолжаю изучать различные UI/UX/CX кейсы в мобильных приложениях, веб-сайтах и в реальном мире. Дизайнерам и менеджерам по продукту, чтобы вдохновиться и добавить в заметки.

Под катом: Revolut, Intsagram, Matreshka.
Читать далее

Читать: https://habr.com/ru/articles/946798/

@a_cup_of_java | Другие наши каналы
Мобильная разработка за неделю #602 (8 — 14 сентября)

В этом выпуске построение современного BLE-сервиса и повышение производительности за счет лучшего сокращения ресурсов, Swift на Android и эволюция презентационных паттернов, MAX без оболочки, эмоциональное решение проблем, трудные уроки инди-хакинга и многое другое. Заходите!
Читать далее

Читать: https://habr.com/ru/articles/946820/

@a_cup_of_java | Другие наши каналы
👍1
WEAR модуль AndroidAPS, доработка и отладка связи при зависании

Используемые устройства - телефон Samsung Galaxy S8+ (SM-G955FD), часы Galaxy Watch 5 Pro (P0ED)

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

Дополнено включение и настройка спортивного режима не только в app, но и в wear, а так же была исследована проблема залипания данных (когда на часы данные о глюкозе приходят не вместе с обновлением на телефоне, а гораздо позже или переодически например всего несколько раз в час, не стабильно). При этом сейчас данные приходят как правило быстрее чем за 7 минут (на часы). Если быть точным - обновление и показ происходит не позже 7 минут.

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

Читать: https://habr.com/ru/articles/946832/

@a_cup_of_java | Другие наши каналы
👎1
Делаем Jetpack Navigation 3 удобнее

Jetpack Navigation 3 дает полный контроль над навигацией через NavBackStack, но прямая работа с ним превращается в написание шаблонного кода и усложняет использование из ViewModel. В статье предлагается решение этих проблемы, добавляя привычный API с командами push(), pop(), replace().

Если вы работаете с Navigation 3 или планируете на неё переходить — эта статья поможет сделать процесс разработки приятнее.
Читать далее

Читать: https://habr.com/ru/articles/946878/

@a_cup_of_java | Другие наши каналы
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.

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

Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».

В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее

Читать: https://habr.com/ru/companies/yandex/articles/945276/

@a_cup_of_java | Другие наши каналы
🔥7👀6👍2
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени

Привет, Хабр! Меня зовут Иван Кузнецов, я Android‑разработчик в Кинопоиске. Сегодня расскажу историю разработки своего пет‑проекта, которая началась с код‑ревью очередного экрана на Jetpack Compose.

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

Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».

В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Читать далее

Читать: https://habr.com/ru/companies/yandex/articles/945276/

@a_cup_of_java | Другие наши каналы
👍2👎1
2 причины смертельной болезни проекта: устаревшие технологии и монополия на знания. Рассказываем, как это лечить

В США до сих пор работают федеральные IT-системы возрастом 8–51 год, их поддержка обходится в $337 млн ежегодно. Бизнес тоже живёт на легаси: компании закладывают бюджет на модернизацию — в среднем это $2,7 млн в год, но 60–80% денег всё равно уходит на штопанье старого кода. При этом каждая такая система — дыра в безопасности: средний ущерб от утечки данных в 2024-м достиг $4,88 млн.

Корни таких ситуаций лежат в монополии на знания о вашей системе, когда всё держится на двух‑трёх людях. Они в голове носят знания, которых нет ни у кого. И если что-то с ними случится, то все процессы встанут.

Я — Владимир Макеев, CEO Surf. В мобильной разработке часто сталкиваюсь с аналогичными  внутренними процессами у заказчиков. В статье расскажу, как «вечная» система тянет компанию ко дну, сколько бюджета тратится на старый стек и как перейти на новый без больших потерь для бизнеса.
Читать далее

Читать: https://habr.com/ru/companies/surfstudio/articles/947362/

@a_cup_of_java | Другие наши каналы
2
Как Swift Runtime влияет на производительность iOS-приложений

Привет, Хабр! Я Кристиан Бенуа, iOS-разработчиĸ в Т-Банĸе. В современном мире производительность приложения — ĸритичесĸи важный фаĸтор, определяющий его успех. Пользователи ожидают мгновенного отĸлиĸа и плавной работы, даже небольшие задержĸи могут негативно сĸазаться на восприятии приложения.

Для больших iOS-приложений, написанных на Swift, понимание работы Swift Runtime и его влияния на производительность — важный навыĸ разработчиĸов. Swift Runtime при исполнении ĸода отвечает за фундаментальные вещи языĸа Swift: управление памятью и систему типов в рантайме.

В статье сосредоточимся на механизмах приведения типов и создания generic-типов внутри Swift Runtime и рассмотрим один ĸонĸретный метод, ĸоторый является узĸим местом в производительности приложения. Разберем примеры ĸода, демонстрирующие, ĸогда и почему этот метод вызывается, ĸаĸово его влияние на отзывчивость приложения и ĸаĸие стратегии использовать для смягчения негативного воздействия.
Читать далее

Читать: https://habr.com/ru/companies/tbank/articles/947486/

@a_cup_of_java | Другие наши каналы
2
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов

В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это будет полезно тем, кто хочет узнать как влезать в работу сторонних плагинов, ускорить написание тестов и тем, кто ищет способы прокачать работу с ИИ-помощниками в своих проектах.
Читать далее

Читать: https://habr.com/ru/companies/cian/articles/920328/

@a_cup_of_java | Другие наши каналы
«Большие вызовы»: как школьники за 3 недели собрали модуль для офлайн-распознавания документов на Android

Привет, Хабр! Меня зовут Олег Милосердов, я руковожу проектами по компьютерному зрению в ВТБ. В июле мы с коллегами приняли участие в научно-технологической программе «Большие вызовы» от образовательного центра «Сириус» в качестве наставников. Мы предложили школьникам спроектировать и внедрить автономный модуль распознавания MRZ-зоны документов, удостоверяющих личность, прямо на мобильном устройстве под Android, которое работает без интернета, серверов и облака. В этой статье расскажу, как талантливые старшеклассники справились с задачей, какой опыт получили и какие выводы мы можем сделать как наставники.
Читать далее

Читать: https://habr.com/ru/companies/vtb/articles/947510/

@a_cup_of_java | Другие наши каналы
Полный айсберг Android. Часть 1

Android кажется давно изученной системой, но на самом деле это настоящий айсберг, большая часть которого скрыта под водой. За привычным интерфейсом прячутся технологии и архитектурные фишки, о которых знают лишь настоящие знатоки. Пора перестать скользить по поверхности. Давайте вместе нырнем в глубины Android, чтобы понять, что скрывает зеленый робо-дроид. Детали внутри.
Читать далее

Читать: https://habr.com/ru/companies/selectel/articles/947484/

@mobi_dev | Другие наши каналы
👎71
Мобильная разработка
Как освоить ассемблер для разработчиков Swift: первые шаги
Освойте основы ассемблера для Swift: узнайте, как работают регистры, настройте Xcode для компиляции .s-файлов и напишите первую программу на ассемблере. Практическое руководство для iOS-разработчиков.

— Читать дальше «Как освоить ассемблер для разработчиков Swift: первые шаги»
Доверенный open source в российских продуктах: фантазия или рабочая цель?

Всем привет!

Сегодня представляем нового эксперта в нашей команде: Дмитрий Белков, руководитель консалтинга Application Security ГК «Солар». В своей первой колонке для Habr Дмитрий оценил вероятность появления доверенного open source и поделился своим мнением о процессах в основе безопасной разработки. Поехали!

Open source дал разработчикам главное — скорость и гибкость. Сторонние библиотеки ускоряют вывод релизов, снижают стоимость лицензий, расширяют функциональность. Но вместе с удобством пришли и угрозы: атаки через зависимости, бэкдоры, эксплойты. Мы все помним Log4j и OpenSSL: когда до 80% библиотек остаются не обновленными, отсутствие контроля зависимостей становится системным риском.

Может ли на этом фоне появиться доверенный open source — открытые компоненты, которые можно использовать без компромиссов по безопасности? Да. Но важно договориться о критериях и инфраструктуре.
Читать далее

Читать: https://habr.com/ru/companies/solarsecurity/articles/947882/

@mobi_dev | Другие наши каналы
2👍1
И ещё немного про то, что const в dart надо ставить где попало

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

Читать: https://habr.com/ru/articles/948074/

@mobi_dev | Другие наши каналы
👍4
Андроид всё еще не готов к RAW-видео

Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое “смогло”. Но не стоит спешить, друзья!
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Читать далее

Читать: https://habr.com/ru/articles/947578/

@mobi_dev | Другие наши каналы