Обновить

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

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

Нейминг в Dart: полезные примеры из документации

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

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

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

Читать далее

Мобильная разработка за неделю #612 (8 — 14 декабря)

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

В этом выпуске особенности Struct в Swift и RemoteCompose в Android, знакомство с Frida и новые умные очки Google, сломанное ценообразование приложений с подпиской, навигация на SwiftUI, создание анимированных полос и многое другое. Заходите!

Читать далее

Как мы использовали Codex, чтобы запустить приложение Sora под Android за 28 дней четырьмя инженерами

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

Это статья из официального блога OpenAI, но подход меня так зацепил, что решил перевести для всех. Я тоже часто переношу веб-приложения на мобилки примерно таким же способом и было очень здорово увидеть такой же подход (архитектура+рабочее_приложение-как-пример) у по сути создателей сильного AI. Пишу про разные похожие интересные вещи тут

В ноябре мы представили миру приложение Sora для Android, предоставив любому пользователю с Android-устройством возможность превращать короткие текстовые промпты в живые видео. В день запуска приложение заняло 1-е место в Play Store. За первые 24 часа пользователи Android сгенерировали более миллиона видеороликов.

За этим запуском стоит история: первая версия продакшн-приложения Sora для Android была создана всего за 28 дней благодаря тому же агенту, который доступен любой команде или разработчику – Codex.

С 8 октября по 5 ноября 2025 года небольшая команда инженеров, работая бок о бок с Codex и израсходовав примерно 5 миллиардов токенов (вау), провела Sora для Android от прототипа до глобального запуска. Несмотря на скорость разработки и масштаб, приложение демонстрирует показатель стабильности (crash-free) 99,9% и архитектуру, которой мы гордимся. Если вам интересно, использовали ли мы какую-то секретную модель – нет, мы использовали раннюю версию модели GPT-5.1-Codex, ту самую, которую любой разработчик или компания могут использовать уже сегодня через CLI, расширение для IDE или веб-приложение.

Читать далее

Как мы запустили кредитное приложение за 6 месяцев. Опыт

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

С нуля собрали кредитное PWA-приложение за 6 месяцев. Рассказываем, какие решения помогли быстро выйти на рынок и выдержать рост.

Читать далее

Flutter — везде (и даже в чайнике). Часть 2

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

Привет, Хабр! Меня зовут Юра Петров, я руководитель отдела разработки компании Friflex и автор канала «Мобильный разработчик». Это вторая статья в серии о платформах, которые поддерживает Flutter, и в ней на самом деле ничего не будет про чайник. Про чайник было в первой. 

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

Читать далее

Flutter MethodChannel: как подружить Dart с нативным Android (и iOS)

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

Привет, Хабр! Сегодня поговорим о том, как Flutter-приложению выйти за пределы чисто Dart-мирка и воспользоваться возможностями родной платформы, например, вызвать API Android или iOS напрямую. Например, есть какая-нибудь классная фича в Android SDK, а в Flutter её нет. Как быть? Ответ — писать собственный плагин и использовать MethodChannel.

Читать далее

Асинхронность и многопоточность в Dart/Flutter: Future, Stream и Isolates

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

При разработке Flutter-приложений быстро возникает необходимость выполнять долгие операции: загрузку данных из сети, обращение к базе, работу с файлами, вычисления и т.п. Если делать это синхронно, основной поток блокируется, интерфейс «зависает», а пользователь видит «замороженный» экран. Асинхронное программирование в Dart позволяет вынести такие операции из UI-потока, не блокируя интерфейс.

В данной статье мы расскажем, как во Flutter использовать ключевые инструменты асинхронности Dart — Future, async/await, Stream, а также многопоточность через Isolate — и покажем, как применять их на практике в реальных приложениях.

Читать далее

Гид по Git — глазами бывшего джуна

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

Привет, на связи Ксюша, миддл-разработчик Surf. Миддлом я стала недавно. Когда я пришла в компанию, я, конечно, знала, что такое Git. Ну, по крайне мере, я так говорила. 

Как-то я, по чистейшей случайности, разумеется, перезаписала чужую ветку. А потом потратила часов 6, чтобы вернуть всё «как было». Благо, помог наш лид, который показал, что делать.

Так я и поняла, что Git — совсем не плохое слово из трёх букв. И теперь несу для всех, кто точно так же начинает свой путь в Git, подробную и понятную инструкцию работы с ним. Го разбираться.

Читать дальше

MDM/EMM/UEM или десять лет спустя

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

Прошло 18 лет с появления первого смартфона и 12 июня 2025 года исполнилось ровно 10 лет с анонса Android Enterprise инициативы, десятилетию которой Google посвятил отдельную статью в своём блоге. Идея готовилась совместно и была поддержана Samsung платформой KNOX.

За эти десять лет на нашем рынке люди узнали, что такое Mobile Device Management, появилась небольшая, но прочная ниша на рынке IT специалистов. Количество идей с предложениями рутовать телефон, чтобы запилить корпоративную фишку, сократилось почти до нуля за эти годы.

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

Читать далее

Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений

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

Привет, Хабр! Меня зовут Максим Сазонов, я android-разработчик в ПСБ. 

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

И главная проблема, которую надо решить при создании этого компонента  это центрирование title и subtitle. Эта проблема возникает потому что у нас может быть тулбар с разным количеством иконок по обе стороны от заголовка, текстом и иконками или только с title. И если ширина иконок у нас стандартна (44 dp), и достаточно просто умножить эту ширину на количество иконок справа, чтобы понять свободное пространство для title и subtitle, то с текстом с одной или с двух сторон всё намного сложнее, так как мы не можем заранее вычислить ширину этого текста, а значит не можем правильно центрировать и задать ширину title и subtitle.

В статье я расскажу, как я решил этот вопрос.

Читать далее

Когда виджетов мало: создаём свой RenderObject во Flutter

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

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

Многие во Flutter привыкли собирать интерфейс из виджетов, не задумываясь, как они вообще устроены. Действительно, стандартных виджетов хватает почти на всё. Почти. Иногда возникает задача, где готовых решений нет или их производительности недостаточно. В такие моменты хочется залезть в движок Flutter и написать что-то своё на уровне рендеринга. Звучит немного страшненько, но я посмотрим, как сделать собственный RenderObject (конкретно RenderBox) с нуля.

Читать далее

Всё, что нужно знать о публикации в Google Play

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

Недавно я решил опубликовать приложение в Google Play, думая, что это не так сложно. Под эту задачу написал небольшое приложение-счетчик и стал погружаться во все тонкости процесса публикации. Почти сразу стало понятно, почему многие называют это кругами ада.

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

Читать далее

Операциональное преобразование (OTXform – operational transformation)

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

Теория без практики пуста, а практика без теории слепа.

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

Читать далее

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

Превращаем сайт в мобильное приложение за пару шагов. Часть 2

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

Привет, Хабр! Меня все так же зовут Матвей. В прошлой статье я собрал простое Android‑приложение из сайта с помощью конструктора. Мы убедились, что для лендинга или каталога зачастую достаточно одной WebView‑обертки. Во второй части возьмем тот же небольшой веб‑сервис, создадим под него URL и соберем полноценное приложение с пушами и доступом к системным функциям.

Разбираться в Swift, Kotlin или Flutter по‑прежнему не придется: вместо этого используем конструктор. На примере посмотрим, как сайт превращается в приложение, какие настройки важны, чтобы оно адекватно работало и выглядело хорошо на Android и iOS. И как довести этот результат до состояния, когда не стыдно использовать. Детали внутри.

Читать далее

Реверс-инжиниринг приложений на Android: знакомство с Frida

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

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

Звучит сложно. Долгое время и мне так казалось, особенно при создании модов для приложений. Байт-код smali неплох, но писать на нем сложную логику вручную — неблагодарное занятие. Но недавно мне попался на глаза решение для динамического реверс-инжиниринга — Frida.

Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение. Под катом я расскажу, как работать с Frida, исследовать приложения на телефоне без root-доступа и создавать свои моды.

Читать далее

Написать приложение без опыта. Часть 1. Вводная

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

Отпуск, целых две недели, без программирования.
К вечеру первого дня уже не знал чем себя занять. Работать мне запретили.. гады.
Как ещё может отдыхать программист? Делать новый pet-project.

Надеюсь на картинке не я...

Читать далее

Утечка сквозь уязвимость: как построить защиту приложения, чтобы данные не достались злоумышленникам

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

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

Как ликвидировать уязвимость

Знакомство со Stencil или уроки шаблонного общения

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

Что любят все разработчики? Конечно, автоматизировать рутинные повторяющиеся действия! Я расскажу, как в этом может помочь язык Stencil, широко известный в узких кругах iOS-разработчиков.

Читать далее

Превращаем сайт в мобильное приложение за пару шагов. Часть 1

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

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

Привет, Хабр! Меня зовут Матвей. В этой статье я расскажу, как быстро и без больших затрат превратить ваш сайт в приложение с помощью конструктора. Посмотрим основные подходы к разработке и как создать свое мини-приложение, а самое главное — где можно протестировать готовый APK. Детали под катом.

Читать далее

Секреты на клиенте: как снизить вероятность утечки с нуля до почти нуля

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

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

Привет, Хабр. Меня зовут Кирилл Смирнов. Я руководитель разработки в iOS команде СберЗдоровьяMedTech компании №1 в России. В этой статье я расскажу, где в iOS-приложениях хранятся секреты и как их находят, почему важно скрывать секреты, и как выстроить надежную защиту с учетом потенциальных угроз. 

Материал подготовлен по мотивам моего доклада на Podlodka iOS Crew. Вы можете посмотреть его здесь.

Читать далее