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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
📱 Чем полезен Server Driven UI

Автор статьи рассказывает о Server Driven UI по такому плану:

• что это вообще за технология

• из чего она состоит

• рассмотрит подходы к ее реализации

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

#новость #android #ios
🤩3
👾 Как оживает смартфон

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

Автор статьи рассказывает, что скрывается под капотом Android и показывает процесс его запуска.

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

#новость #android
1
📲 Погружаемся в мир технологий Яндекс Переводчика

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

👀 Смотреть видео

#новость #android
😁21
🔍 Шаблон архитектуры MVC (Model View Controller)

Шаблон MVC предполагает разделение кода на 3 компонента. При создании класса/файла приложения разработчик должен отнести его к одному из следующих трёх уровней:

🔹 Модель:

Этот компонент хранит данные приложения. Он ничего не знает об интерфейсе. Модель отвечает за обработку логики предметной области (реальных бизнес-правил) и взаимодействие с базой данных и сетевыми уровнями.

🔹 Представление:

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

🔹 Контроллер:

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

Несмотря на применение схемы MVC для модульного проектирования приложения, уровни кода зависят друг от друга. В этом шаблоне Представление и Контроллер зависят от Модели. Для применения шаблона MVC в проекте можно использовать несколько подходов:

➡️ Подход 1: Действия и фрагменты могут выполнять роль контроллера и отвечать за обновление представления.

➡️ Подход 2: Используйте активность или фрагменты в качестве представлений и контроллера, а модель будет отдельным классом, который не наследуется от какого-либо класса Android.

В MVC данные обновляет контроллер, а представление их только отображает. Модель отделена и тестируется независимо от UI. Если представление соблюдает принцип единой ответственности — лишь передаёт действия контроллеру и показывает данные без бизнес-логики — то его достаточно проверять UI-тестами.

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

#буст #SeniorView #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👏31
⚡️Команда дня: adb logcat

Хотите быстро отследить, что происходит в приложении на устройстве или эмуляторе?
На помощь приходит простая команда:

adb logcat | grep "MyTag"


📌 Что делает:

— Подключается к логам Android-устройства или эмулятора
— Фильтрует вывод по тегу (например, MyTag, который вы используете в Log.d(...))
— Показывает только нужные строки, чтобы не тонуть в море системных логов

👀 Полезно, когда:

— Нужно быстро найти крэш или баг прямо на реальном устройстве
— Хотите дебажить только свою часть логов, а не весь Android-спам
— Проверяете работу логирования перед релизом

💡 Совет:

Добавьте уровни логов для фильтрации:

adb logcat *:E   # только ошибки  
adb logcat *:W # предупреждения и выше


👉 А вы часто используете adb logcat в работе?

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

#буст #JuniorKit #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
🖥 To Do — ведение дел на Jetpack Compose

To Do — простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.

💻 To Do на GitHub

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

#буст #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
2👾1
🔥 5 горячих клавиш в Android Studio для новичков

Чтобы быстрее освоиться в Android Studio, держи подборку полезных сочетаний клавиш (Windows/Linux → Mac в скобках):

1️⃣ Поиск по всему проекту

Ctrl + Shift + F (Cmd + Shift + F)
Найдёшь любой фрагмент кода во всём проекте.

2️⃣ Быстрый переход к классу

Ctrl + N (Cmd + O)
Откроешь нужный класс по имени без лишней навигации.

3️⃣ Форматирование кода

Ctrl + Alt + L (Cmd + Option + L)
Приводит код к читаемому виду по стилю проекта.

4️⃣ Автодополнение кода

Ctrl + Space (Ctrl + Space)
Экономит время, подсказывает методы и переменные.

5️⃣ Запуск приложения

Shift + F10 (Ctrl + R)
Мгновенный запуск на эмуляторе или подключённом устройстве.

Освоив эти комбинации, ты будешь писать и навигироваться по проекту заметно быстрее ⚡️

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

#буст #JuniorKit #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
3
👾 Шаблон архитектуры MVP

MVP (Model - View - Presenter)
появился как альтернатива традиционному архитектурному паттерну MVC (Model - View - Controller). Используя MVC в качестве архитектуры приложения, разработчики сталкиваются со следующими трудностями:

🔘 Большая часть основной бизнес-логики находится в Controller. В течение жизненного цикла приложения этот файл становится всё больше и его становится сложно поддерживать.

🔘 Из-за тесной связки пользовательского интерфейса и механизмов доступа к данным, и Controller, и View оказываются в одной Activity или Fragment. Это создаёт проблемы при внесении изменений в функциональность приложения.

🔘 Становится трудно проводить модульное тестирование разных слоёв, так как большинство тестируемых частей зависят от компонентов Android SDK.

Паттерн MVP решает эти проблемы MVC и предоставляет простой способ структурировать код проекта. Причина, по которой MVP широко применяется, заключается в том, что он обеспечивает модульность, тестируемость и более чистую и удобную в сопровождении кодовую базу. Он состоит из следующих трёх компонентов:

🔹 Model: слой для хранения данных. Отвечает за обработку предметной логики (реальных бизнес-правил) и взаимодействие с базой данных и сетевым уровнем.

🔹 View: слой пользовательского интерфейса (UI). Он отвечает за визуализацию данных и отслеживает действия пользователя, чтобы уведомлять Presenter.

🔹 Presenter: получает данные из модели и применяет UI-логику, чтобы решить, что отображать. Он управляет состоянием View и выполняет действия в соответствии с уведомлениями о действиях пользователя.

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

#буст #SeniorView #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🥱2😁1
✂️ Обрезка в Jetpack Compose

Обрезка — это удаление частей контента за пределами заданной формы. Представьте, что вы используете формочки для печенья: всё, что находится внутри формочки, остаётся, а всё, что снаружи, удаляется.

В Compose это делается с помощью Modifier.clip функции:

Image(
painter = painterResource(R.drawable.avatar),
contentDescription = null,
modifier = Modifier
.size(72.dp)
.clip(CircleShape)
)


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

📌 Пользовательские Формы

Если встроенных фигур (CircleShape, RoundedCornerShape и т. д.) недостаточно, вы можете создать собственную Shape и нарисовать свой собственный контур. Например:

class SquishedOvalShape : Shape {
override fun createOutline(
size: Size,
layoutDirection: LayoutDirection,
density: Density
): Outline {
return Outline.Generic(
Path().apply {
addOval(Rect(0f, size.height / 4f, size.width, size.height))
}
)
}
}


Примените его, как и любую другую форму:

Modifier.clip(SquishedOvalShape())


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

#PixelPerfect #MiddlePath #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🛡 adb shell dumpsys package – детальная информация об установленном приложении

Получайте полную техническую информацию о любом установленном приложении на Android-устройстве – от версий и разрешений до активности процессов.

📌 Ключевые сценарии:

1. Информация о версиях:
adb shell dumpsys package com.yourapp.package | grep -E "versionName|versionCode"


2. Проверка разрешений:
adb shell dumpsys package com.yourapp.package | grep -A 20 "requested permissions"


3. Информация о активностях и сервисах:
adb shell dumpsys package com.yourapp.package | grep -E "Activity|Service|Receiver"


4. Детали установки APK:
adb shell dumpsys package com.yourapp.package | grep -A 10 "Installation"


⚡️ Полезные фильтры:

1. Только основные данные:
adb shell dumpsys package com.yourapp.package | head -50


2. Поиск конкретной активности:
adb shell dumpsys package com.yourapp.package | grep -B 5 -A 5 "MainActivity"


3. Информация о подписантах:
adb shell dumpsys package com.yourapp.package | grep -A 15 "Signatures"


🔍 А вы используете dumpsys для отладки? Какие еще параметры dumpsys вам полезны?

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

#буст #JuniorKit #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
3