Обновить

Мобильная разработка

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

Экранный переводчик для macOS: читаем статьи и смотрим видео без переключения окон

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.7K

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

Читать далее

Скорость команды разработки — свойство системы, а не скорость самого быстрого ковбоя на Диком Западе

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

Скорость команды часто пытаются измерить количеством сильных разработчиков. Но самый быстрый человек в хаотичной системе обычно не ускоряет команду. Он просто первым начинает компенсировать её проблемы.

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

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

В такой среде архитектура нужна не для красивой схемы. Она нужна, чтобы изменения были дешёвыми.

Читать далее

Используем Buildozer для компиляции python в apk. Проблемы, решения и личный опыт

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.6K

В статье мы познакомимся с Buildozer и научимся собирать APK из python с его помощью. Я собрал готовое решение, как без плясок с бубном и вызова “Богов кодинга” собрать проект.

Читать далее

Сборщик мусора в Dart. Часть 3: старое поколение

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

В первой части мы разобрали, как Dart отличает число от объекта, а во второй – как убирается молодое поколение. Там все держалось на одном приеме: живых переносим в соседнее полупространство, а всю старую половину выбрасываем целиком.

Почему в старом поколении переезд не подходит

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

Читать далее

От 10 первопроходцев до 700 энтузиастов: Бета-программа ОС Аврора отмечает 5-летие

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.5K

6 сентября 2026 года исполняется пять лет с момента запуска программы Бета-тестирования ОС Аврора. За это время закрытое сообщество из первых 10 участников выросло до 700 человек из 17 городов России. А общее количество заявок на участие в программе сегодня превышает 25 тысяч. Бета-тестеры пробуют новые версии операционной системы и других продуктов платформы Аврора, участвуют в UX-исследованиях, первыми тестируют устройства и приложения партнеров, и помогают делать ОС Аврора удобнее.

Читать далее

Экономика владения мобильной фермой. Сколько стоит собрать собственный парк устройств

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

тобы приложение работало одинаково хорошо у пользователей с разными моделями смартфонов, его желательно протестировать на таких же устройствах. Но что делать, если аудитория насчитывает десятки тысяч человек и у каждого разные смартфоны: у кого-то Samsung последней модели, флагманский Huawei, REALME, INFINIX или старенький Xiaomi, а кто-то из ностальгии купил iPhone 4? Разные модели, разные операционные системы… Как вариант, в таком случае можно использовать мобильную ферму — собрать свою или использовать готовое облачное решение. 

Привет, Хабр! Я Саша, руководитель направления поддержки в Selectel. Мне стало интересно посчитать, сколько стоит собрать мобильную ферму своими руками и насколько это выгодно для среднего и крупного бизнеса в сравнении с облачным решением. Что получилось — рассказываю под катом.

Читать далее

Plllay / собственный браузер для видео — спорно?

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

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

Когда пытаешься осмыслить Семихатова переходящего с кораблей бороздящих просторы космоса на эрмитовы операторы в гильбертовом пространстве. Когда вглядываешься в расположение пальцев каждого слайда “Dark Blues Music To Escape To...” в скользящей технике Justin Johnson. Когда разучиваешь каждое движение праздничного танца пятницы в жизнектвеождпющем стейтменте — выжил. Ну или просто ресечишь техники массажа и упражнений в зале…

Читать далее

Как мы в Мой МТС сделали SOS-кнопку для быстрой связи ребенка с родителем

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

Дети порой попадают в плохие ситуации, и не всегда есть возможность позвонить родителю. Мы, команда Мой МТС, придумали решение — бесплатный виджет для детских смартфонов, который устанавливается на главный экран через приложение «Мой МТС». Ребенок может в любой момент отправить сигнал бедствия. Одно нажатие на SOS-кнопку — и родитель получает уведомление, что что-то произошло, и точную геолокацию ребенка.

Расскажем, что за это за виджет и как мы его разрабатывали.

Читать далее

«Я, робот», или история о том, как я начал учиться в IT, когда AI был только в кино. Это заняло у меня 10 лет

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

Всем привет! Сегодня я хочу поделиться историей, которая длится уже порядка 10 лет.

Это история не про успешный успех или очередное нытье о том, как сложно и несправедливо, это просто про меня и мой путь. Она началась много лет назад, в далеком 2016, когда Tilda только приобрела свою первую популярность и из всех кипятильников кричали: «Web-разработчикам конец», «Убийца веб-разработки».

В 2016 году мне было 22 года, и я толком не понимал, чем заниматься. У меня был закончен специалитет и бакалавриат по финансам и банковскому делу. Я застал кризис 2014 года, уйдя с хорошей должности в банке в армию на срочку. Вернувшись, я полгода обивал пороги во Владивостоке в то время, когда все банки массово сокращали персонал. В целом, если у тебя не было «волосатой руки», твой максимум составлял 50 тысяч рублей, и то с премией!

Работал я в тот момент в одном дочернем банке одного очень известного Зеленого Банка, на должности кредитного эксперта. Единственное, что занимало мою голову, был вопрос: «Что я вообще здесь делаю и какого будущего я хочу?»

Этот вопрос я задавал себе сотни раз, и единственный ответ, который находил: «Хочу создать что-то свое, хочу помогать людям, хочу, чтобы это было красиво и супер удобно». Но что конкретно делать я не имел ни малейшего понятия.

Читать далее

Что умеет ассистент по умолчанию на Android — на примере Алисы AI

Время на прочтение6 мин
Охват и читатели17K

На устройствах под управлением ОС Android можно выбрать ассистента по умолчанию — почти так же, как браузер. Один раз выбираете в настройках — и дальше открываете его системным жестом поверх любого приложения. Удобно.

Казалось бы, теперь выбранный ассистент может видеть всё, что происходит на телефоне, и делать с ним что угодно… Вовсе нет. При установке Android автоматически выдаёт приложению только базовые разрешения. Для доступа к расширенным возможностям нужно отдельное разрешение пользователя, а некоторые функции обычному стороннему приложению недоступны совсем.

Меня зовут Ваня, я руководитель команды Android-разработки SDK Алисы и техлид проекта дефолтного ассистента. Сегодня мы с вами разберёмся, где проходят эти границы, на примере Алисы AI.

Читать далее

Страдать нельзя продлить! Хождение по мукам или тщетные попытки продлить подписку apple developer осенью 2026

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

Публикация приложения в App Store — процесс волнительный, однако потеря этой возможности — уже катастрофа. В этой статье мы разберем способы продления членства в программе Apple Developer осенью 2026 года и подводные камни с которыми можно столкнуться. Если вы тоже столкнулись с этой проблемой или знаете рабочие варианты — эта статья для вас.

Читать далее

Может ли ИИ перенести приложение на ОС Аврора? Эксперимент с Mattermost и публикацией в RuStore

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели9.3K

Привет, это команда ОС Аврора.

У нас есть проблема, о которой не принято говорить в блоге вендора, но без неё вся эта история не имеет смысла. Про Аврору мы регулярно слышим одно и то же: платформа хорошая, но приложений мало, а переносить на неё уже готовые приложения с Android сложно и дорого. Пет-проект — ладно. Корпоративное приложение — тоже: их у нас уже много, просто они живут внутри закрытых контуров, и вы их не видите. А вот массовое приложение, которому для существования нужна миллионная аудитория, вроде бы обречено: никто не станет переписывать миллион строк legacy-кода ради новой платформы.

Дальше разговор обычно упирается в одну и ту же фразу: у нас всё нативное. Kotlin, Swift, годы накопленного кода, и переписывать это долго и дорого. Кроссплатформа есть далеко не у всех.

Тем, у кого она есть, нам уже давно есть что ответить: Flutter под Аврору поддерживается официально, Compose Multiplatform — тоже, и такие команды переезжают без драмы. А вот всем остальным мы до недавнего времени могли предложить только сочувствие.

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

Читать далее

Как я делал self‑host медиатеку на Kotlin Multiplatform и почему сервер «стримит» интерфейс на клиент

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

Я пользовался для трекинга фильмов и сериалов Кинопоиском, Trakt, Letterboxd, IMDb, TMDB, MyShows — и по-честному ни один из них не бесил настолько, чтобы стать поводом всё бросить и писать своё. У каждого свои шероховатости: у Кинопоиска в какой-то момент стало слишком много рекламы, а заодно убрали подробную статистику по жанрам и странам, которая раньше была. У Trakt банально медленный сайт, лимит в 1000 фильмов в списке и ограниченные возможности с созданием списков. У IMDb так и не появилось нормального трекинга сериалов. TMDB — просто не нравится интерфейс. С Letterboxd — не могу даже сформулировать, почему, просто не зашло. А MyShows,устраивает почти во всём: удобно, есть оповещения о новых сериях, реклама ненавязчивая, лёгкая подписка для поддержки сервиса.

Так в чём тогда была зацепка? Не в том, что существующие сервисы плохие — большинство из них вполне рабочие. А в том, что ни один не даёт того сочетания, которое хотелось: self-host, где данные и инфраструктура твои, а не чужие; стриминг собственного контента внутри того же интерфейса, где ты его трекаешь; и просто инженерный азарт — я долгое время обдумывал архитектуру гибридной SDUI/BDUI на Kotlin, когда сервер стримит слоты на клиент, а клиент рендерит заранее заготовленные UI-элементы, при этом чтобы приложение ощущалось и выглядело как нативное. Это была отдельная задача, которую хотелось решить независимо от недостатков конкурентов.

Клиент — минималистичный интерфейс с трекингом фильмов и сериалов: статусы просмотра, оценки, свои списки.

Читать далее

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

Свет в конце пайплайна: 3D-движок на чистом Dart (+gpu)

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

С появлением Flutter GPU у Dart-разработчиков впервые появился прямой доступ к Metal и Vulkan без единой строчки нативного кода. Чтобы понять, готов ли новый API к настоящим 3D-играм, я написал над ним движок на чистом Dart: сцена, PBR-освещение, каскадные и кубические карты теней, HDR-конвейер и три взаимозаменяемых графических бэкенда (Flutter GPU, WebGL2 и программный растеризатор), плюс три законченные игры, играбельные прямо в браузере. В статье разбираем границы Flutter GPU, устройство движка и самые дорогие грабли, собранные по дороге.

Читать далее

Мы переизобрели Gradle Flavors на KMP и вот почему

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели6.5K

Если вы хоть раз работали с крупными KMP проектами, то наверняка хотели обратиться к старым добрым гредл флейворам, которые всем так хорошо знакомы по андроид разработке.

Но спустя 5 минут поисков до вас доходит осознание:Gradle Flavor на KMP нет и не планируется, а вместо них нам достается expect/actual, разбивающий код по платформенным сорц сетам

Читать далее

Мобильный аудио гид или как я делал приложение для самостоятельных городских прогулок

Время на прочтение8 мин
Охват и читатели7.4K

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

Гулял я как‑то по переулкам города. Старые здания, полные историй. А я страсть как люблю историю. Чей дом, когда построили, кто жил и что еще интересного. На фасаде нет таблички, экскурсовод рядом не материализовался. Постоянно доставать телефон, искать в интернете, открывать несколько сайтов то еще занятие. Можно сфотографировать здание и потом разобраться. Потом наступает примерно никогда.

Так и родилась идея Yerick City Explorer — Android‑приложение для самостоятельных городских прогулок.

Читать далее

Локальный компаньон для Genshin, HSR и ZZZ: как я упаковал три игры в офлайн‑приложение без бэкенда

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

Забыли забрать ежедневные гемы или потеряли счёт круткам до гаранта? Рассказываю, как я решил собственную проблему и разработал GachaPoint — бесплатный офлайн‑компаньон для Genshin Impact, Honkai: Star Rail и Zenless Zone Zero без бэкенда и рекламы.

В статье разбираю техническую изнанку проекта для Android (Java / Architecture Components): Зачем использовал «плоскую» таблицу в SQLite (Room) для календаря и как это ускоряет выборки за один запрос, Почему для сетки дней кастомный GridLayout оказался удобнее RecyclerView, Как настроить точные ежедневные напоминания через WorkManager с учётом жестких ограничений Doze Mode в Android 12/13+.

Исходники проекта открыты, буду рад обсудить архитектуру и UI‑решения в комментариях!

Читать далее

Как я перестал платить за macOS-минуты: перенос iOS-сборки с GitHub Actions на Xcode Cloud, с цифрами

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

Одна минута macOS-раннера в GitHub Actions стоит десять минут Linux. Я перенёс iOS-сборку Flutter-приложения в Xcode Cloud: с ~45 оплачиваемых минут на релиз до 6, без .p12 и профилей в секретах, с тремя shell-скриптами вместо 90 строк YAML. Внутри — схема тегов ios/v* и android/v*, настройки Xcode Cloud, которые молча сжигают compute-часы, и таблица семи падений первого живого прогона — ни одно из них не было ошибкой миграции. Плюс чек-лист и открытый скилл, который из этого вырос.

Читать далее

Миллион частиц на iPhone: строим аттрактор Лоренца на GPU с Metal

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели8.1K

Привет! Я Максим Савченко, iOS-разработчик. Эта история началась с вопроса, как сделать живую форму в духе иконки Siri — и довольно быстро уехала в другую сторону: аттрактор Лоренца на сотнях тысяч, а потом и на миллионе частиц, где и расчёт, и отрисовка живут на GPU.

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

В статье разбираю это по шагам: математика и выбор интегратора, ping-pong-буферы, compute/render-пайплайн, point primitives и additive blending. А в конце — GPU Frame Capture и замеры на физическом iPhone. Спойлер, который я сам не ожидал: RK4 в этой конфигурации оказался далеко не самым дорогим местом. Основная цена ушла в отрисовку и overdraw.

Если коротко: это не гайд «как нарисовать красивую картинку», а разбор того, зачем вообще лезть в Metal и где кадр упирается на реальном устройстве.

Читать далее

Спустя год разработки приложения для изучения иностранных слов — я наконец нащупал его главную концепцию

Время на прочтение6 мин
Охват и читатели19K

Пользователи открывали мое приложение VibeLing и не понимали, что учить. Я добавил готовые коллекции и долго считал проблему решенной.

Но однажды открыл собственный словарь сербского и понял: все это время я решал не ту проблему.

Читать далее