Обновить
512K+

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

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

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

Миссия выполнима: Как подружить Max и E2E

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

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

Идея зародилась, когда весь этот цирк только начинался. Прогревали новый ГОСТ-мессенджер, поливали его чем только можно. В какой-то момент проскочила новость: В Max нет сквозного шифрования...

И тут зародилась глупая идея: почему бы самому не прикрутить к нему разные функции анонимности и шифрования? Уровень конечно совсем не тот, что у Telegram и Signal, но сама возможность скрыть содержание переписки завораживает, разве нет?!

Спойлер: APK весит 11 МБ против 120 МБ у официального, не греет телефон и показывает каждый запрос к серверам ok[.]ru и vk[.]ru

Читать далее

Новости

10 лет в индустрии: как Авроре удалось сделать лучшую поддержку разработчиков в России

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

В апреле этого года «Открытой мобильной платформе» исполнилось 10 лет. За это время мы прошли путь от запуска первой версии ОС до зрелой экосистемы, в которой партнёры-разработчики играют важную роль, ведь они являются соавторами продукта. И как подтверждение успеха данного подхода, в мае в Омске мы получили награду «За лучшую поддержку разработчика среди российских ОС» на «ДевФест 26».

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

Читать далее

Конкуренты скопировали ваш сайт, приложение или код: пошаговый алгоритм действий

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

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

Эта статья — практический алгоритм. Разберём, как зафиксировать нарушение, какие способы защиты существуют, чем отличается путь через суд от пути через ФАС, сколько это стоит и сколько длится, какие дела уже прошли через суды и как не оказаться в роли нарушителя самому.

Читать далее

Как мы выбирали стек для PWA после блокировки в App Store: от Swift к React за считанные месяцы

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

Привет, Хабр! Меня зовут Константин Шкурко, я ведущий разработчик мобильных приложений в РСХБ. Сегодня хочу рассказать историю о том, как всем известные обстоятельства заставили нас в сжатые сроки искать альтернат­ивные пути доставки нашего инвестиционного приложения «Свои инвестиции» пользователям iOS - и как это изменило наш технологический стек.

Когда Apple заблокировала российские банковские приложения в App Store, перед нами встала непростая задача. У нас были десятки тысяч активных пользователей на iOS, которые пользовались брокерским приложением для управления своими инвестициями. Торговля акциями, облигациями, аналитика портфеля, выставление заявок - всё это внезапно стало недоступно для значительной части клиентской базы.

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

Читать далее

Завод ИИ-агентов в одном терминале через оркестрацию

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

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

Учился на технолога бродильных производств. Защитил кандидатскую. Управляю пивоварней и параллельно — исполнительный директор в фирме по производству пищевого оборудования. Код не писал никогда. Но в детстве, когда появился нормальный интернет, я развлекался тем, что ставил на комп разные дистрибутивы Linux — от OpenBSD до классических. Не особо понимал, как их настраивать и зачем мне это. Потом, когда стал работать — понял, в чём сила Linux, но для настройки просто искал советы в интернете и копировал оттуда команды, или просил брата помочь.

А потом появились LLM. И я понял — вот оно. Можно не учить синтаксис, не зубрить фреймворки. Можно объяснить что нужно и получить работающий код. Вдохновился. Попробовал. Столкнулся с галлюцинациями, бесконечными переделками, кода сгенерировано уже куча — а он не работает. Перегорел. Попробовал снова.

Контекст такой: мне нужно было сделать АСУ ТП для пивоварни. Система управления технологическим процессом — датчики, клапаны, насосы, частотники. Я решил, что ИИ уже дорос. Начал с одного Claude‑агента: я ему говорю что делать, он делает. Потом дошёл до шести параллельных агентов. Они начали конфликтовать, переделывать работу друг друга, плодить баги. На одну фичу — пять новых проблем. Проект рос, но болезненно.

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

Читать далее

Безопасное обновление интерфейса во Flutter после ожидания

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

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

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

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

Читать далее

Мобильная разработка за неделю #632 (25 — 31 мая)

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

В этом выпуске продолжаем исследовать новинки I/O 2026 и переводить пользователей, прекращаем использовать .onAppear и лезем Gradle под капот, делаем приватность частью архитектуры, создаем систему привлечения пользователей, поднимаем Llama 3 в облаке и многое другое. Заходите!

Читать далее

HalChat теперь Open Source: как успешный старт в Google Play изменил курс разработки

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

Всем привет!

Недавно я публиковал статью о том, что HalChat вышел в Google Play, и это вызвало небольшой ажиотаж вокруг проекта. Буквально за пару дней мы пробили отметку в 100+ скачиваний, а за один день было зарегистрировано 60 новых пользователей. Оценив такой отклик, я решил, что нужно идти дальше и сделать клиент HalChat для Android открытым.

Далее: зачем Open Source для HalChat, обновление и планы на будущее.

Читать далее

Ищем разработчика в Synaps — приложение для научного нетворкинга

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

Это третий пост о нашем проекте на Хабре. В первом мы рассказывали гипотезу, во втором — что из неё выжило после первых пользователей. Сейчас короткий и довольно прямой пост: мы ищем разработчика. Без модной формулировки про «rockstar ninja» — реально студенческий проект, в котором сейчас не хватает рук, чтобы двигаться дальше.

Читать далее

Острова и несколько личностей на одном устройстве: как мы делаем приватность частью архитектуры

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

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

В этой статье разберём две вещи, которые из этого выросли: острова (свой сервер) и мультиличность (несколько независимых зашифрованных аккаунтов на одном телефоне). И отдельно, без прикрас, расскажем, где у этого подхода границы.

1. Фундамент: сервер, который мало что знает

Сначала коротко про основание, иначе дальше будет непонятно.

- Идентификатор это UIN, просто число. Никакого номера телефона, никакой загрузки списка контактов. Аккаунт не привязан к личности, его можно сжечь и завести новый за секунды.

- Sealed sender: отправитель запечатан внутри зашифрованного конверта, а не лежит в заголовке. На транспортном уровне сервер видит "кому доставить", но не "от кого". Кто это понимает, тот сразу видит, что граф общения на сервере не собирается.

- Контент шифруется end-to-end: эфемерный X25519 на сообщение, HKDF, ChaCha20-Poly1305. Сервер пересылает шифротекст, ключей у него нет.

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

2. Острова: свой сервер вместо нашего

Раз сервер это тупая труба, его можно вынести куда угодно. Любая организация (редакция, юрфирма, команда, НКО) поднимает свой экземпляр RCQ, свой остров, и общается внутри него: свой сервер, свои UIN, своя история, свои группы, отдельно от публичной сети.

Читать далее

Telegram Mini App для ресторанов: бронирования, IIKO, CRM, Grafana и Telegram API в одной системе

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

Ресторанный холдинг с 10 ресторанами использовал первую версию Telegram Mini App как интерфейс, через который гости могли ознакомиться с заведениями сети. На следующем этапе потребовалось усилить IT-направление: увеличить скорость разработки, стабилизировать систему, расширить функциональность и связать приложение с операционными процессами ресторанов.

В результате Telegram Mini App вырос в полноценный цифровой контур, который объединяет бронирования, мероприятия, меню, банкеты, сертификаты, кулинарию, коммуникацию с гостями, аналитику, админ-панель и интеграции с внешними системами.

На текущем этапе система стабильно держит 11 000 MAU, включает более 200 функций, работает с Remarked, IIKO, RocketData, CRM, Telegram API и внутренними API заказчика. В процессе эксплуатации также была отражена атака на серверы заказчика.

Читать далее

Linux на смартфоне — PostmarketOS

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

Один из немногих способов пользоваться чистым Linux на смартфоне - установка операционной системы PostmarketOS.

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

Читать далее

Я засунул таск-трекер, голосования с кворумом и AI, следящего за экранами сотрудников, в один мессенджер

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

Звучит как мем про стартап, который пытается быть всем сразу. Я сам так думал примерно до середины разработки. Но в итоге мы это собрали, выкатили в App Store и Google Play, и теперь команды реально ведут в этом проекты. Расскажу, как оно устроено внутри, что было тупо, что неожиданно сработало, и где я до сих пор не уверен, что мы поступили правильно.

Сразу оговорюсь: это не «убийца Jira» и не «убийца Slack». Это попытка убрать одну конкретную боль, на которую я смотрел несколько лет.

Читать далее

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

Книга: «System Design. Проектирование мобильных систем. Подготовка к сложному интервью»

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

Привет, Хаброжители! Что вас ждет на интервью по проектированию мобильных систем (MSD)? Что делать, если вас попросят разработать новый YouTube или телеграм?

Практическое руководство MSD превращает сложные собеседования в предсказуемый процесс. Вы получаете 5-шаговую схему эффективного прохождения интервью и разбор 7 реальных кейсов (лента новостей, мессенджер, YouTube, Google Drive, трейдинговая платформа и др.), позволяющих проектировать архитектуру клиента, API, офлайн-режим, кэширование и масштабируемость. Здесь вы найдете готовые шаблоны, trade-off’ы и шпаргалки — всё, чтобы уверенно проходить интервью в топ-компаниях и расти от мидла до стафф+.

Читать далее

Как мы тестируем в Профи.ру: почему у нас нет пирамиды, зато есть ромб и матрица

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

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

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

Привет! На связи Саша Мищенко, тимлид платформенной команды, и Света Чекунова, Senior QA Auto. Нам кажется, что мы нашли этот баланс.

Читать далее

Impact Analysis в дизайн-системе: как мы сделали CI осмысленнее, а review понятнее

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

Меня зовут Даниил, я Android-разработчик в «БКС Мир инвестиций».

В первой статье мой коллега рассказывал, как мы использовали Kotlin IR Compiler Plugin, чтобы автоматически добавлять testTag и semantics в Compose-компоненты: Kotlin IR Compiler Plugin в дизайн-системе: автотесты с Compose без ручной разметки.

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

Читать далее

Штраф в размере 155 000 рублей получил владелец сайта по заявлению Роскомнадзора

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

Практически в каждой свой статье, в которой прямо или косвенно идёт речь о важности соблюдения Закона о персональных данных, я упоминаю риск получения административного штрафа по ст. 13.11 КоАП РФ. Теперь давайте поговорим не про «очередные страшилки для бизнеса», а про реальную судебную практику.

Читать далее

iPad как инструмент разработчика в эпоху агентного программирования

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

Ещё несколько лет назад разговоры об iPad как полноценном инструменте разработчика воспринимались скептически. Машинка для Netflix, блокнот для набросков, планшет для презентаций — но только не рабочая среда для написания и деплоя кода. У этого скептицизма были основания: iPadOS долго не имела нормальной многозадачности, инструментов для работы с серверами почти не существовало, а необходимость постоянно переключаться между приложениями делала любой серьёзный рабочий процесс мучительным.

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

Читать далее

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

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

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

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

Но есть три законных способа наказать плагиатора: зарегистрировать сам визуальный образ (промышленный образец), способ переключения (изобретение), фирменный элемент или весь интерфейс (товарный знак). 

Читать далее

Gradle под капотом: как перестать страдать и заставить сборку летать

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

Привет, Хабр! На связи «Исходный Код». Сегодня разбираем инструмент, который мы все запускаем по сто раз на дню, но часто воспринимаем как черный ящик. Без него мы бы до сих пор собирали проекты руками, писали скрипты на bash и страдали от вечного «у меня собирается, а у тебя нет».

Gradle дает нам единый источник правды, повторяемые сборки и масштабируемость: от пет-проекта до огромных многомодульных монорепозиториев. Давайте разберем его по косточкам, чтобы настройка билдов больше не была болью.

Читать далее
1
23 ...