Обновить

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

Кейс «Учёт надоя»: креативное обновление мобильного приложения РСХБ «Свои финансы»

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

Привет, Хабр! Я Кирилл Адещенко, исполнительный директор департамента цифрового бизнеса РСХБ. В этой статье я делюсь наблюдениями и выводами о том, как команды банков работают с публикацией мобильных приложений в условиях ужесточения правил магазинов приложений и санкционных ограничений.

Читать далее

Джедайские техники Kotlin: inline-функции и reified-типы

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

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

Kotlin радует лаконичным синтаксисом и мощными фичами, но некоторые из них остаются недооценёнными. Сегодня поговорим про две джедайские техники Kotlin, о которых многие слышали, но не все используют в полной мере: это inline-функции и reified-типы.

Прокачать Kotlin

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

Навигация на SwiftUI: чего не хватает и как исправить

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

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

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

Читать далее

Camera Control в iOS 18: полный разбор архитектуры и интеграции

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

Привет, Хабр! Меня зовут Илья, и последние несколько недель я провёл в дебрях документации Apple, исходников AVFoundation и видео с WWDC, разбираясь с новой фичей iPhone 16 — Camera Control. В этой статье расскажу, как устроена архитектура этой системы, почему интеграция сложнее, чем кажется, и дам рабочий код для интеграции в ваше приложение.

Читать далее

Секреты под защитой: как мы спрятали ключи приложения с помощью Gradle-плагина

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

Секреты вашего Android‑приложения под надёжной охраной!

Узнайте, как превратить API‑ключи и токены в невидимые в репозитории и APK данные с помощью собственного Gradle‑плагина.

Читать далее

Apple Developer бесплатные курсы для обучения в iOS

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

Евгений предоставляет открытый доступ к фундаментальным материалам по Swift:

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

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

Подходит: начинающим с нуля

Язык: RU

🔗 https://lazyload.academy/articles/list/ios/prepare-to-course

Также на сайте доступен платный модуль по SwiftUI (76 глав) и модуль по многопоточности.

Доступ открывается через Boosty — 1250 ₽/мес (стоимость полностью оправдана объёмом материала).

Подробнее

Играемся с формами M3 Expressive в Android приложении на View

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

В обновлении Material Design 3 Expressive была проведена работа над оживлением пользовательского интерфейса. Одним из нововведений стало добавление 35-ти новых форм, а также поддержка shape morphing между ними.

В Compose всё делается не сложно. Google подготовил подробную документацию, следуя которой можно делать разные забавные вещи. Однако если Вам нравится работать с View больше, чем с Compose – реализовать подобное будет проблематично. Поэтому я решил попытаться упростить эту задачу и написать свою небольшую библиотеку для этого...

Читать далее

Ноябрьский Flutter-дайджест

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

Привет, друзья! 👋
Ноябрь выдался ультра-насыщенным, и если вы пропустили хоть что-то — сейчас наверстаем!

Читать далее

Основы AGSL для android разработчика

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

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

Представь: тебе нужно «поколдовать» над пикселями прямо в UI - добавить живой градиент, искажение картинки под пальцем, стеклянный блеск карточке и тому подобные эффекты. Раньше для этого приходилось прибегать к «тяжеловесам» таким как OpenGL/Vulkan, либо мучить CPU постобработкой битмапов. AGSL (Android Graphics Shading Language) решает это элегантнее: это язык фрагментных шейдеров, встроенный в сам графический стек Android, так что эффекты применяются прямо на уровне отрисовки интерфейса.

Читать далее