Обновить
256K+

Android *

Пишем под самую популярную мобильную ОС

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

Мобильная разработка за неделю #640 (20 — 26 июля)

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

В новом выпуске как Apple в iOS 27 удалось сократить время запуска приложений и разработка системы автоматической синхронизации фотографий, интервью с Senior iOS инженером из TikTok’а и интеллектуальные приложения для Android с Jetpacker, 15 лет Kotlin, безмолвные ошибки, что и как измерять в мобильной разработке, частная социальная сеть без алгоритмов и рекламы и многое другое. Подключайтесь!

Читать далее

Как найти ленивого в команде разработки?

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

Совместная разработка, и как найти лентяя в команде. История о том как я пришёл к созданию плагина для OpenSource.

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

А чтобы не читать всю статью инструменты можно быстро посмотреть

JETBRAINS MARKETPLACE

VISUAL STUDIO MARKETPLACE

Найти лентяя

Автоматизация метаданных App Store и Google Play с fastlane и Azure Pipelines

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

Приложение поддерживает 20+ языков. Каждое обновление — это не только новая сборка, но и правки в обоих магазинах: название, подзаголовок, описание, «что нового». Для каждого языка, на каждой платформе, через медленный веб-интерфейс.

При двух десятках языков и двух платформах обновление «что нового» вручную занимает 30–40 минут. При этом легко ошибиться: скопировать не ту версию текста, забыть один язык, перепутать поля между iOS и Android.

В статье покажу, как свести всё это к одному коммиту.

Читать далее

Измеряя незримое: что и как измерять в мобильной разработке

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

Всем привет! Меня зовут Алексей, я техлид Android-направления в компании Домклик.

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

Читать далее

Как я добавил HEIF, HEIC и AVIF в Android-ImageMagick7

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

HEIF, HEIC и AVIF на Android через ImageMagick: хроника внедрения в два этапа. Без лишней воды — только проблемы и их решения.

Читать далее

Как мы делаем 2D-симулятор грузоперевозок: что уже готово и куда движемся к MVP

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

Делаем Truck Sim 2D — 2D-симулятор грузоперевозок на Godot 4.6 для Android и ПК. Физический груз на RigidBody2D, который реально может выпасть из кузова, производственная цепочка от шахты до завода и первая сетевая версия на ENet — уже играбельная сборка 0.2.8. Рассказываем, как это устроено внутри и что планируем до MVP: превращаем LAN-конвой в настоящий кооператив

Читать далее

Свободный и бесплатный ɹǝddoH — multi-hop SSH L3 VPN для iOS/Android

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

Как я сделал свободный и бесплатный ɹǝddoH - multi-hop SSH L3 VPN для iOS/Android

И запаковал сервер так, что его можно поднять с телефона: вбил IP и root-пароль - и нода в библиотеке. Цепочка из нескольких VPS - entry → relay → exit. Теперь даже на сервер заходить не надо.

Преамбула

Раньше я делал Naive-клиент, и он нормально работал. Но потом клоуны решили включить поведенческий анализ. И вот - все. Ничего не работает. Дальше опять начинается гуглинг и, в итоге, опять я прихожу к VLESS с кучей надстроек, эмуляций различных браузеров, игр и так далее. Ах да, еще надо это все настраивать, делать цепочки из нескольких серверов, чтобы выход и вход не совпадал, заниматься скриптингом и снова молиться, что все заработает и будет работать дальше. А тем временем ssh -D отлично работал все это время, и я такой, а почему бы не выдать root всем завернуть это все внутрь ssh, да еще и по цепочке, да еще и чтобы настраивалось одной кнопкой. И не прокси, а полноценный VPN.

Ведь протокол уже есть - SSH. Его не надо изобретать. Им пользуются все, как и https. Если клоуны заблокируют SSH, то это будет конечно весело, тут уже, боюсь, я ничем помочь не смогу. Осталось лишь написать клиент под это дело, опубликовать его в сторах, доказать опять Apple что это приложение уникальное (как они достали с этим), рассказать ревьюверам в Гугле что такое SSH и как оно работает... тяжела жизнь Open Source программиста. Но я справился.

Читать далее

Мобильная разработка за неделю #639 (13 — 19 июля)

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

В этом дайджесте вопросы о System Design и аннотации в Kotlin, Gradle под капотом и как мигрировать Flutter-приложение на SPM, как отправить 1 миллион уведомлений, открытый веб в виде социальной ленты, архитектура независимого умного дома и многое другое. Заходите!

Читать далее

Link to Pane: буфер обмена Mac Android через протокол Microsoft (потому что иначе — pain (икра слов)

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

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

Пришло время реверсить протоколы снова. Apple я делал. Google тоже. Угадайте какая компания следующая?

Читать далее

Мобильный Vivaldi 8.1 — Всё для лета

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

Наша команда боролась с летней жарой, чтобы отполировать ваш любимый браузер и подготовить его к праздникам. Благодаря большому количеству исправлений Vivaldi на мобильных устройствах стал лучше, чем когда-либо. Но это ещё не всё!

Читать далее

LLM против APK: сколько стоит автономно перепаковать Android-приложение

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

Большие языковые модели давно вышли за пределы «помоги дописать функцию». Они доступны всем — и злоумышленник тут не исключение. Отсюда практический вопрос, который нас и интересовал: может ли LLM самостоятельно, без человека, атаковать мобильное приложение, и если да — во сколько это обойдётся.

Из всего списка рисков мы взяли один конкретный сценарий: внедрить в приложение вредоносный код так, чтобы после пересборки оно осталось рабочим и его можно было раздавать живым пользователям. Проверяли на Android.

Читать далее

Знакомство с командой Android

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

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

В этом интервью Катя Супрун, технический менеджер Android-платформы, рассказала о том, как вместе с ребятами из core-команды она отвечает за производительность, оптимизацию и стабильность — за то, чтобы твой просмотр был максимально комфортным. Но кроме рабочих будней у них есть киновечера, шашлыки, настолки и традиция радоваться даже маленьким победам.

Читать далее

Аутентификация через биометрию в Kotlin Multiplatform или Koncierge

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

Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform.

Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID.

Так появился Koncierge — набор KMP-модулей biometric, auth и auth-compose

Казалось бы, задача довольно стандартная: объявить expect-класс и написать несколько actual-реализаций. На Android это примерно так и получилось. А вот Windows Hello, JVM-модуль и публикация всех артефактов заставили немного разобраться в том,

как Kotlin работает с нативным кодом

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

Аннотации в Kotlin: от @Deprecated до своего KSP-процессора

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

Аннотации в Kotlin — это не только @Deprecated и @Suppress. Разбираемся, где живут SOURCE, BINARY и RUNTIME, чем KSP отличается от kapt, как compiler plugins меняют код и какие практические задачи можно закрыть генерацией: debug menu, удаление экспериментов и каталог performance-метрик.

Читать далее

Лучшая архитектура KMP-приложений и когда её не использовать. Часть 2

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

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

Это вторая, практическая, часть из двух. Здесь про то, как организованы слои, какие контракты уходят в Swift, как готовить SKIE, как устроены обработка ошибок и DI, что с модульностью, скоростью сборки и тестами.

Читать далее

Gradle под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность?

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

Привет, Хабр. На связи Илья Новиков, технический директор команды разработчиков «Исходный код».

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

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

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

Давайте заглянем под капот, чтобы настройка сборки перестала быть проблемой.

Читать далее

Использование mise для установки зависимостей при андроид-разработке

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

Есть большая и сложная система сборки Gradle и андроид-плагин AGP для установки большей части компонентов Android SDK, необходимых для вашего приложения. Но что, если вам не хочется руками устанавливать Android Studio, Android SDK, cmake, scrcpy и прочие нужные вещи? Здесь на помощь приходит mise — при кажущейся простоте он умеет все, что нам нужно.

Читать далее

Мобильная разработка за неделю #638 (6 — 12 июля)

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

В новом выпуске UISlider изнутри и топ-10 вопросов по Kotlin в 2026 году, Swift 6.2 против вашего оптимизатора и переписывание Flutter на C#, всего несколько недель на вайб-кодинг, новый формат электронных книг для изучающих язык, многомерные векторы в конкурентном анализе мобильных приложений, обучение LLM 0.5B с нуля на статьях Хабра и многое другое. Подключайтесь!

Читать далее

Мне надоело писать один и тот же код. Поэтому я сделал Featuregen

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

Привет, Хабр. Я уже не тот беззаботный парнишка, что собирал 486-й компьютер. Время бежит, я скуф успел поработать с C++, C#, Java и Kotlin, последние 10 лет занимаюсь мобильной разработкой. Программирование я до сих пор люблю потому что больше ничего не умею. Но чем дольше работаешь, тем чаще ловишь себя на мысли, что от некоторых вещей начинает подгорать. Сегодня я расскажу, как я попытался избавиться хотя бы от части таких вещей.

Читать далее

Как ускорить проверку приложения с помощью Impact-анализа. Часть 3: UI-тесты

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

Когда проект растёт, дольше всего начинают тянуться самые «тяжёлые» проверки – UI-тесты. Один-два модуля поменял, а CI всё равно гоняет сотни тестов на эмуляторах и ждёт их десятки, а то и сотни минут. Знакомо?

Это третья, финальная статья цикла о том, как мы в Циане перешли от полного прогона всех проверок к выборочному с помощью Impact-анализа. В первой части я показывал, как мы ускорили статические анализаторы, во второй — как в два раза сократили unit-тесты, научившись обходить граф Gradle-модулей. В заключительной части я расскажу, как у нас на проде реализован выборочный запуск UI-тестов.

Читать далее