Мобильная разработка – Telegram
Мобильная разработка
13.9K subscribers
857 photos
238 videos
2.96K links
Актуальное по мобильной разработке — Android, iOS, кроссплатформа

Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/oVBP
Download Telegram
Подборка актуальных вакансий

iOS-разработчик
Где: удалённо
Опыт: можно без опыта

Android-разработчик
Где: Удалённо
Опыт: от 2 лет

iOS-разработчик
Где: Москва, Санкт-Петербург, Казань, Пермь, можно удалённо
Опыт: от 2 лет

Senior Android-разработчик
Где: Москва
Опыт: от 3 лет

Senior iOS-разработчик
Где: Москва
Опыт: от 3 лет

Senior Android-разработчик
Где: Москва, можно удалённо
Опыт: от 3 лет

Middle iOS-разработчик
Где: Москва
Опыт: от 3 лет

#вакансии #работа
👎12💩7👍2🔥1
Как исправить устаревшие Android API

В этой статье автор делится опытом по исправлению неподдерживаемых функции и API на примерах замены:

— устаревшего конструктора без параметров Handler,
— метода setHasOptionsMenu() на интерфейс MenuProvider,
— метода startActivityForResult() на другие Activity Result API и launcher.

Реализация и примеры здесь:

https://tprg.ru/Sw2V

#android
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Меню Apple Watch на Jetpack Compose

Используя Jetpack Compose можно реализовать практически любой UI-дизайн, даже если это меню Apple Watch. Как создать двумерную сетку из элементов, Scale-анимацию, drag-жест для правильного смещения контента и многое другое — в этой статье:

https://tprg.ru/8X3Y

#android
👍3🎉1🤮1
This media is not supported in your browser
VIEW IN TELEGRAM
Практический пример создания View-компонента на SwiftUI

В этой статье пошаговое руководство как создать собственный Custom View для городов, используя Sruct, Computed Property и несколько функций, чтобы рассчитать количество лайков и поездок: https://tprg.ru/L71J

#swiftUI
👍5
Ускоренная сборка с помощью Kotlin Symbol Processing

Kotlin Symbol Processing (KSP) — это упрощённый API для разработки легковесных плагинов компиляции и процессоров аннотаций. KSP похож на Kotlin Annotation Processing Tool, но работает быстрее.

В статье рассматривается реализация KSP с использованием аннотаций, SymbolProcessor, Resolver и KotlinPoet:

https://tprg.ru/OgZQ

#kotlin #android
👍4💩21
This media is not supported in your browser
VIEW IN TELEGRAM
Объясняем Kotlin Multiplatform на крестиках-ноликах

KMM позволяет разработчикам объединить всю бизнес-логику в единые модули и запускать один и тот же код на разных платформах. За последние несколько лет эту модель обсуждают всё чаще.

Разработчик Тихон Устинов рассказал о плюсах и минусах работы с KMM в проекте, а также на примере создания игры «крестики-нолики» для Android, iOS и JS продемонстрировал, как применять KMM:

https://habr.com/ru/company/rostelecom/blog/682160/

#kmm #android #ios
🔥14👍3💩1
Повышаем производительность приложения с Baseline Profile

Baseline profile — это классы и методы, которые заранее скомпилированы и установлены вместе с приложением.
Частичная компиляция позволяет ускорить время запуска и производительность.

В отличие от ART Cloud Profile, Baseline profile создаётся во время сборки, поэтому его легче протестировать. Для генерации данного профиля можно использовать библиотеку Macrobenchmark.

Подробнее в статье: https://tprg.ru/6DHA

#android
Oбновлениe в библиотеках Jetpack

WebKit 1.5: заменили setForceDark и setForceDarkStrategy API на setAlgorithmicDarkeningAllowed из WebSettingsCompat,
Compose Runtime 1.3: в CompositionData был добавлен метод find,
Room 2.5: добавлена ​​новая аннотация Upsert для обновления существующей записи или создания новой,
Sqlite Version 2.3: androidx.sqlite переписали с Java на Kotlin.

Подробнее: https://tprg.ru/ltBR

#android
👍18
Danger: автоматизируем ревью на CI

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

Команда из Lamoda уже используют Danger в своих проектах, чтобы упростить ревью пул-реквестов. Разработчик Татьяна Родионова поделилась опытом настройки Danger и рассказала с какими сложностями она столкнулась:

https://habr.com/ru/company/lamoda/blog/681564/

#android
👍3
Подборка актуальных вакансий

Android-разработчик
Где: Удалённо
Опыт: от 2 лет

Старший Android-разработчик
Где: Москва
Опыт: от 3 лет

Senior Android-разработчик
Где: Москва, можно удалённо
Опыт: от 3 лет

iOS-разработчик
Где: удалённо
Опыт: можно без опыта

iOS-разработчик
Где: Москва, Санкт-Петербург, Казань, Пермь, можно удалённо
Опыт: от 2 лет

Middle iOS-разработчик
Где: Москва
Опыт: от 3 лет

Senior iOS-разработчик
Где: Москва
Опыт: от 3 лет

#вакансии #работа
👎6👍3
Повторяем алгоритмы сортировки на практике в диаграммах Swift

В этом видеоуроке показано, как использовать Swift Charts, на примере реализации и визуализации различных алгоритмов сортировки:

https://youtu.be/UCSXF741iHI

#swiftui
👍6👎1
Вышла предварительная версия Cross device SDK для разработчиков

Cross device SDK анонсировали ещё на Google I/О. Основная функциональность данной версии: обнаружение устройств, безопасное соединение между устройствами, поддержка сессии на нескольких устройствах.

По сути, этот пакет SDK берёт на себя всю работу с протоколами обнаружения устройств, аутентификации и подключения.

Детальнее: https://tprg.ru/UKB5

#android
👍13🔥1
Как загрузить файл с помощью Retrofit

Библиотека Retrofit используется для работы с REST API и отправки запросов на удалённый сервер в Android.

Этот видеоурок поможет разобраться начинающим, как загружать файл на сервер:

https://youtu.be/fEYhQOUe0g0

#android
👍173
This media is not supported in your browser
VIEW IN TELEGRAM
Как обнаружить утечки памяти в Android-приложениях

Утечки памяти впустую тратят ресурсы приложения и рано или поздно приведут к исключению OutOfMemory. Для их обнаружения часто используется библиотека LeakCanary или Memory Profiler в Android Studio.

LeakCanary проводит анализ на наличие утечек памяти и отправляет уведомление. После нажатия на уведомление LeakCanary сбрасывает heap и предоставляет данные “Leak trace” уже в журнале или в самом приложение LeakCanary.

Разбираемся с причиной возникновения данной проблемы и LeakCanary в статье:

https://tprg.ru/yEWu

#android
🔥10🤔4👍3💩3
Flutter плагин для создания скрин-листов из видео

video_thumbnail — это плагин для видео файлов и видео ссылок, который позволяет создавать и сохранять превью.

С его помощь можно управлять форматом, разрешением и качеством изображения без дополнительных расчётов. Данный плагин легко установить, добавив video_thumbnail в качестве зависимости в pubspec.yaml.

Репозиторий: https://github.com/arjun-c-369/video_thumbnail?ref=flutterawesome.com

Источник: https://tprg.ru/dEDH

#flutter
👍8
Создаём простой Chat App на SwiftUI

В этом практическом гайде автор показывает, как с нуля создать чат-приложение и подключить его к серверу с помощью MirrorFly Chat SDK: https://tprg.ru/85yb

Репозиторий: https://github.com/MirrorFly/MirrorFly-UIKit-iOS

#ios #swiftui
👍10
Как настроить разрешения уведомлений на Android

Вероятно, вы уже знакомы с новым Runtime Permission в Android 13 для запроса разрешения на показ уведомлений. Однако данное изменение затронуло ещё все предыдущие версии. Для targetSdkVersion 32 и ниже, пользователю будет предложено разрешить или запретить отправку уведомлений при первом открытии приложения.

В этой статье рассказывается, как реализовать уведомления и сохранить показатель отказов минимальным с учетом изменений:

https://tprg.ru/0chB

#android
👍12
Dribbble идеи UI дизайна

Для разработки нового дизайна приложения порой не хватает идей. На Dribbble можно найти примеры дизайна пользовательских интерфейсов для вдохновения. Тематика совершенно разная, поэтому, возможно, вы подчеркнёте что-то для себя:

— Android : https://dribbble.com/search/android
— iOS: https://dribbble.com/search/ios

#android #ios
20👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация watchdog на iOS

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

Код 0x8badf00d в Crash Log помогает определить, почему произошло завершение работы. Однако не всегда понятно, что вызвало в самом приложение эту ошибку. Чтобы решить эту проблему, можно написать собственный watchdog и с помощью логов найти причину блокировки основных потоков.

В этой статье рассматривается, как c помощью класса WatchdogRunLoopObserver и CFRunLoopObserver можно отслеживать сбои в приложении:

https://tprg.ru/Hb6k

#ios
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Какие вопросы задать работодателю Android-разработчику?

Собеседование — это диалог. После технического интервью лучше обсудить условия работы, чтобы на самых ранних этапах понять, подходит ли вам компания или нет.

В этой статье были разобраны примеры вопросов от Android-разработчика на собеседовании, а также нюансы, на которые стоит обращать внимание в ответах работодателя:

https://habr.com/ru/company/hh/blog/663266/

#android
9👍2
Flutter: реализация Redux с Elementary

Elementary — это архитектурный пакет для написания приложения по правилам Clean Architecture, основанный на паттерне MVVM. С помощью связки Elementary и Redux можно отделить бизнес-логику от логики отображения и легко расширять функциональность проекта.

Чтобы показать, как работает связка Redux+Elementary, разработчики из Surf реализовали простое приложение, которое выбирает случайные изображения животных. Через screen-WidgetModel-model активируется механизм взаимодействия с Redux. Т.к. чистый Redux не может работать с асинхронностью, то для обработки сетевых запросов автор использовал redux_epics в качестве middleware-составляющей.

Подробнее: https://tprg.ru/r2wT

#flutter
👍43