Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.55K subscribers
1.68K photos
83 videos
52 files
4.51K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
🆚 Верстать руками или через дизайн-систему

Раньше каждый экран — маленькое произведение искусства (и боли): ручные отступы, кастомные компоненты, всё под себя. Теперь — дизайн-система, токены, готовые UI-киты и чёткий гайд от дизайнера.

Одни говорят: «Система ускоряет и спасает от хаоса».
Другие отвечают: «Креатив умер, теперь мы просто собираем конструктор».

А ты кто? 💬

❤️ — Использую дизайн-систему, не хочу страдать
👍 
Верстаю руками, потому что могу
🤝 Компромисс — система, но с кастомом

🐸 Библиотека мобильного разработчика 

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝16👍42
👨‍💻 Топ вакансий для мобильных разработчиков за неделю

Senior iOS Developer — от 400 000 до 600 000 ₽, гибрид (Москва, Санкт-Петербург)

Senior Flutter разработчик — от 260 000 ₽, удалёнка

iOS-разработчик — от 220 000 до 350 000 ₽, удалёнка

Android Developer — от 200 000 до 300 000 ₽, удалёнка

KMP developer — от 450 000 ₽, удалёнка

➡️ Еще больше топовых вакансий —‍ в нашем канале Mobile jobs

🐸 Библиотека мобильного разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🔥 Когда понимаешь SOLID — жизнь становится проще

В октябре действует скидка 40% на все курсы от Proglib Academy, включая интенсив «Архитектуры и шаблоны проектирования»

📘 На интенсиве ты:

— разберёшься, как проектировать приложения, которые не ломаются при каждом изменении;
— освоишь SOLID-принципы, IoC, адаптеры и фабрики;
— научишься строить масштабируемые архитектуры;
— создашь собственную игру «Звёздные войны».

👨‍💻 Примеры кода на C#, Java, Python, PHP, C++ и JavaScript. Главное — понимать принципы, а не язык.

Преподаватель — Евгений Тюменцев, директор компании HWdTech, разрабатывал многопоточные кроссплатформенные приложения для IBM Watson.

📆 Формат: онлайн, 1 месяц.
📚 9 лекций + 2 бонусных занятия + практика.

Интенсив подойдёт джунам, которые хотят апнуться до мидла, и мидлам, мечтающим о роли архитектора.

👉 Переходи к курсам со скидкой 40%
🧩 Почему Feature-модули не решают проблему масштабирования

Многие команды переходят к модульной архитектуре, надеясь, что разбив проект на feature-модули, они автоматически получат масштабируемость. На практике — чаще наоборот.

⚙️ В чём ошибка

Feature-модули решают структурную, а не архитектурную проблему.
Да, они:

• уменьшают время сборки,
• изолируют зависимости,
• упрощают навигацию по проекту.

Но если в каждом модуле копируется один и тот же UI-state, бизнес-логика и сетевой слой — ты не масштабируешь архитектуру, ты масштабируешь хаос.

🧠 Что действительно масштабируется

Масштабируется только архитектурная консистентность:

• единые контракты между слоями,
• повторно используемые базовые интерфейсы (например, для state-management или DI),
• стандартизированный подход к навигации и фичам.

Feature-модуль должен быть потребителем архитектурных решений, а не их источником.

Практическая мысль

Прежде чем делить монолит на 20 модулей, ответь себе:

Есть ли у нас устойчивая архитектурная основа, которую эти модули смогут разделять?


Без этого модульность превращается в распыление ответственности, а не в масштабирование.

А как у вас реализована модульность в проекте? 💬

🐸 Библиотека мобильного разработчика

#АрхитектурныйКод #SeniorView
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
⚙️ adb shell input keyeventуправление устройством с помощью системных событий

Отправляйте системные события на Android-устройство через ADB – имитируйте нажатия аппаратных кнопок, жесты и другие действия без физического доступа к устройству.

✏️ Основные keyevent коды:

# Базовые кнопки
adb shell input keyevent 3 # HOME
adb shell input keyevent 4 # BACK
adb shell input keyevent 26 # POWER (вкл/выкл)
adb shell input keyevent 24 # VOLUME_UP
adb shell input keyevent 25 # VOLUME_DOWN

# Медиа и специальные
adb shell input keyevent 85 # PLAY/PAUSE
adb shell input keyevent 86 # STOP
adb shell input keyevent 87 # NEXT
adb shell input keyevent 88 # PREVIOUS
adb shell input keyevent 164 # MUTE


📌 Полезные сценарии:

1. Автоматизация тестов:

# Сценарий: открыть приложение, сделать действия, вернуться домой
adb shell am start -n com.yourapp/.MainActivity
sleep 2
adb shell input keyevent 4 # BACK
adb shell input keyevent 3 # HOME


2. Тестирование обработки прерываний:

# Во время работы приложения
adb shell input keyevent 26 # POWER (блокировка)
sleep 2
adb shell input keyevent 26 # POWER (разблокировка)


3. Управление медиа в фоне:


adb shell input keyevent 85   # PLAY/PAUSE музыки


⚡️ Продвинутые комбинации:

Скриншот через комбинацию:

adb shell input keyevent 120  # SYSRQ (скриншот)


Перезагрузка устройства:


adb shell input keyevent 116  # POWER + перезагрузка через меню


Какие keyevent вы используете чаще всего? 💬

Библиотека мобильного разработчика

#буст #MiddlePath #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
📉💻⚡️ IT-рынок обвалился: на одну вакансию теперь 2383 отклика

Если ты еще не почувствовал, как изменился IT-рынок, то скоро почувствуешь на своей шкуре. Вакансий стало в разы меньше, требования выросли до небес, а конкуренция превратилась в кровавую баню. Рассказываем, как лихорадит рынок труда в IT.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱62
📱 Железный опрос

Пора узнать, на чём живёт Android Studio и Xcode в 2025.

Расскажите в комментариях, какой у вас ноутбук или ПК:

➡️ модель и процессор,
➡️ сколько оперативки,
➡️ и тянет ли всё это ваши сборки и эмуляторы без подтормаживаний?

Интересно, сколько у нас счастливчиков с M-чипами и кто до сих пор держится на стареньком i5 👇

🐸 Библиотека мобильного разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
4
⚙️ PostgresNIO — клиент PostgreSQL для Swift

PostgresNIO — неблокирующий event-driven клиент Swift для PostgreSQL, построенный на SwiftNIO.

Фичи:


🔘 PostgresConnection, позволяющий подключаться к серверу PostgreSQL, авторизоваться, отправлять запросы и получать результаты
🔘 PostgresClient, объединяющий и управляющий соединениями
🔘 Интерфейс async/await с поддержкой backpressure
🔘 Автоматическое преобразование примитивных типов Swift в формат Postgres
🔘 Интеграция с экосистемой серверов Swift, включая использование SwiftLog и ServiceLifecycle
🔘 Разработан для эффективной работы на всех поддерживаемых платформах (протестировано в системах Linux и Darwin)
🔘 Поддержка Network.framework (при наличии) (например, на платформах Apple)

💻 PostgresNIO на GitHub

🐸 Библиотека мобильного разработчика

#буст #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
💥 Октябрь — месяц апгрейда!

До конца этого месяца действует скидка 40% на все курсы Proglib Academy (кроме AI-агентов, ML для старта и математики).

Под акцию попал и наш хит — курс «Алгоритмы и структуры данных».

👨‍💻 Он подойдёт джунам, мидлам и всем, кто хочет писать код осознанно, а не наугад.

👨‍🏫 Преподаватели — инженеры из Яндекса и ВШЭ.

🎓 Сертификат по итогам обучения — в портфолио.

47 видеоуроков и 150 практических задач;
поддержка преподавателей и чат;
доступ к материалам на 12 месяцев.

Полная программа курса тут 👈

👉 Остальные курсы
1
В чем основная ошибка и почему UI может не обновляться?
Anonymous Quiz
47%
Изменение @Published свойства не в главном потоке
5%
Weak self в Task не используется
14%
@StateObject создается внутри View
4%
Отсутствует обработка ошибок
30%
Посмотреть ответ
👍2
🧠 ИИ-генерация изображений в Firebase AI Logic

Добавление кастомных изображений в ваше приложение может значительно улучшить и персонализировать пользовательский опыт, а также повысить вовлеченность пользователей.

В этой статье рассматриваются две новые возможности генерации изображений с помощью Firebase AI Logic: специализированные функции редактирования Imagen, которые в настоящее время находятся в стадии предварительной версии, и общедоступный Gemini 2.5 Flash Image (также известный как «Nano Banana»), предназначенный для создания контекстных или диалоговых изображений.

👉 Читать статью

🐸 Библиотека мобильного разработчика

#свежак #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
2
⚙️ Семантический Gradle: публикуем артефакты со спокойствием и уверенностью

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

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

Александр рассказал о том, как научить Gradle анализировать изменения в API и автоматически поднимать версии артефактов с соблюдением семантического версионирования. Заодно он показал некоторые приемам в Gradle, которые помогут писать плагины.

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

👀 Смотреть доклад

🐸 Библиотека мобильного разработчика

#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤖 Красивое резюме = провал

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

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

👉 Читать статью

🐸 Библиотека мобильного разработчика

#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Предложите небольшую доработку для следующего кода

if age >= 18 {
driveCar()
} else {
doNotDrive()
}


Этот код хорошо работает - но можете ли вы предложить небольшое улучшение рефакторинга, чтобы сделать его еще лучше?

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

age >= 18 ? driveCar() : doNotDrive()


🐸 Библиотека мобильного разработчика

#буст #JuniorKit #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱62😢2🤔1
🗓 Новости недели

Приготовили для вас дайджест по актуальному из мира iOS, Android.

🔵 Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS

Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране? Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства.

🔵 Эффект глюка на Jetpack Compose

Эффекты глитча (глюка, сбоя) — неотъемлемая часть научно-фантастических фильмов и киберпанк-игр. В этой статье мы увидим, как легко реализовать этот эффект в Jetpack Compose.

🔵 Что такое ANR и как с ним работать правильно

Когда пользователь открывает приложение, нажимает на кнопку — и ничего не происходит несколько секунд, Android начинает считать, что “приложение не отвечает”. Через 5 секунд на главном потоке система показывает диалог: “Приложение не отвечает. Закрыть?” Это и есть ANR (Application Not Responding).

🔵 Dart 3.9: актуальность новых фич

Это плановый, «прикладной» апдейт, который делает анализатор умнее, CLI — ощутимо быстрее, pub — точнее в разрешении зависимостей, а также приносит официальный MCP-сервер для интеграции Dart/Flutter с ИИ-ассистентами. В статье — только существенное, с примерами и пошаговыми рекомендациями

🐸 Библиотека мобильного разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2