Обновить
186.12

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

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

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

Р-ФОН: пишем, запускаем и отлаживаем для него программы на Raspberry Pi с установленной ОС «РОСА Фреш»

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

Это самый простой способ создания программ для Р-ФОН.

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

Уникальность телефона Р-ФОН заключается в том, что на нём можно сразу запускать программы, работающие на компьютерах с процессорами ARM и операционными системами «РОСА Фреш» и «РОСА Хром». Это существенно облегчает разработку. И написание, и запуск, и отладку, и работу в программе можно сначала обкатать на компьютере, и лишь на последнем этапе скопировать программу на телефон и протестировать уже на нём.

Естественно, для работы со специфическими для телефона компонентами, такими как GPS-приёмник и GSM-модем, требуется отдельный подход. Но для создания пользовательского интерфейса и, например, кода для работы по сети - компьютер более чем удобен.

Какой же компьютер с процессором ARM подойдёт? Неплох компьютер на процессоре Байкал-М, но он дороговат, и его ещё нужно поискать. А вот компьютер на основе Raspberry Pi можно назвать народным. Подойдёт 64-разрядный, то есть, начиная с версии Raspberry Pi 4. Мне достался Pi 400, и всё описанное ниже было опробовано именно на нём.

Ниже описан мой опыт написания простых тестовых программ для Р-ФОН, использующих различные графические инструментарии (Qt, PyQt, GTK3, GTK4, SDL2).

Читать далее

Новости

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

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

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

Читать далее

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

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

Это статья из официального блога 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 или веб-приложение.

Читать далее

Создание приложения с меню на Flutter, которое не занимает много памяти

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

Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.

Некоторое время назад я создал приложение со строкой меню для macOS под названием Quickgif. Оно удовлетворило мою давнюю потребность — иметь инструмент для выборки GIF-картинок, который можно использовать в любом приложении, не загружая GIF-ки вручную и не имея дела с разными реализациями, используемыми в других программах.

Читать далее

Не просто WebView: Строим движок на Flutter для конвертации сайтов в приложения с Server-Driven UI

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

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

WebView-приложения — это боль. Тормоза, убогий UX, мгновенный реджект от Apple по пункту 4.2 («Minimum Functionality»). Обычно это просто браузер без адресной строки, за который стыдно брать деньги.

Я решил не делать очередную "обертку", а подойти к задаче инженерно. Моя цель: платформа, где WebView — лишь контентный слот, обернутый в полноценный нативный UI на Flutter.

В этой статье:

Читать далее

Как прикрутить AI к табуретке

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

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

Не спешите закидывать помидорами. Это новый тип AI-based продуктов, которых будет становиться все больше. И для некоторых задач такой подход действительно отлично подходит.

В этой статье попробуем разобрать архитектуру такого продукта на минималках и посмотреть, как прикрутить AI к существующему приложению.

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

OTXform — операциональное преобразование от теории к практике

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Репозиторий доверенного ПО: инхаус или аутсорс?

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

На SOC Forum одной из самых горячих дискуссий стала тема, которая ещё пять лет назад казалась нишевой, а сегодня напрямую влияет на устойчивость критической инфраструктуры: создание доверенных репозиториев ПО.

В дискуссии приняли участие: Федор Герасимов, лидер сообщества FinDevSecOps, эксперты финансового сектора − Максим Кожокарь (Банк России), Всеслав Соленик (Сбертех), а также Антон Прокофьев (ГК «Солар»), Юлия Липатникова (Cloud.ru) и Николай Костригин (Базальт СПО).

Полную запись дискуссии можно посмотреть здесь (Программа 18 ноября, Зал 3, 16.00).

В этом материале приводим самые интересные цитаты экспертов сессии и их рекомендации.

Читать далее

Анимация загрузки: как скорость влияет на восприятие времени и конверсии

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

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

Длинное ожидание портит пользовательский опыт. Так почему же современные технологии сами создают эти задержки и как с этим бороться? Разберёмся дальше.

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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