This media is not supported in your browser
VIEW IN TELEGRAM
PokeCardCompose: приложение с карточками покемонов на Android
Проект PokeCardCompose был создан на основе архитектуры MVI с использованием Koin и Jetpack Compose. Приложение получает данные из сети с помощью Ktor и сохраняет в БД.
Детальнее о стеке используемых технологий читайте здесь:
https://androidrepo.com/repo/lopspower-PokeCardCompose
P.S. покемоны не прилагаются к архитектуре проекта
#android
Проект PokeCardCompose был создан на основе архитектуры MVI с использованием Koin и Jetpack Compose. Приложение получает данные из сети с помощью Ktor и сохраняет в БД.
Детальнее о стеке используемых технологий читайте здесь:
https://androidrepo.com/repo/lopspower-PokeCardCompose
P.S. покемоны не прилагаются к архитектуре проекта
#android
👍9👎5😁2
UI-тесты: Шпаргалка по Compose
Переходя с View на Compose, можно легко потеряться в многообразии API для тестирования. В этой шпаргалке собраны все основные API для покрытия приложения UI тестами:
https://tprg.ru/tPJ3
#android #compose
Переходя с View на Compose, можно легко потеряться в многообразии API для тестирования. В этой шпаргалке собраны все основные API для покрытия приложения UI тестами:
https://tprg.ru/tPJ3
#android #compose
👍16
This media is not supported in your browser
VIEW IN TELEGRAM
Полезные библиотеки на GitHub для iOS-разработчиков
1. SSZipArchive — простой Utility-класс для сжатия и распаковки файлов. С помощью ZipArchive можно открывать защищённые паролем zip-архивы, а также создавать большие (>4,3 Гб) zip-файлы.
2. YPImagePicker — image-picker в стиле Instagram. Эта библиотека даёт возможность обрабатывать изображения, видео из галереи или сделать фото из приложения.
3. SwiftCharts — фреймворк для создания диаграмм в приложении. В этой библиотеке можно найти все виды диаграмм: простые, вертикальные, линейные и настроить стиль диаграммы.
4. Flex — библиотека с набором встроенных инструментов для отладки. С помощью панели инструментов вы можете просматривать и изменять практически любую часть приложения.
#ios
1. SSZipArchive — простой Utility-класс для сжатия и распаковки файлов. С помощью ZipArchive можно открывать защищённые паролем zip-архивы, а также создавать большие (>4,3 Гб) zip-файлы.
2. YPImagePicker — image-picker в стиле Instagram. Эта библиотека даёт возможность обрабатывать изображения, видео из галереи или сделать фото из приложения.
3. SwiftCharts — фреймворк для создания диаграмм в приложении. В этой библиотеке можно найти все виды диаграмм: простые, вертикальные, линейные и настроить стиль диаграммы.
4. Flex — библиотека с набором встроенных инструментов для отладки. С помощью панели инструментов вы можете просматривать и изменять практически любую часть приложения.
#ios
👍8👎2
This media is not supported in your browser
VIEW IN TELEGRAM
Как создать свою анимацию с помощью SwiftUI? Гайд для начинающих
Анимация ожидания или загрузки показывает пользователю, что приложение не зависло/не закрылось, а просто ждет ответа с сервера. Такой вид анимации давно используется в YouTube, чтобы отвлечь пользователя, пока загружается контент.
По ссылке пример создания анимации загрузки:
https://tprg.ru/IAbi
#swiftui
Анимация ожидания или загрузки показывает пользователю, что приложение не зависло/не закрылось, а просто ждет ответа с сервера. Такой вид анимации давно используется в YouTube, чтобы отвлечь пользователя, пока загружается контент.
По ссылке пример создания анимации загрузки:
https://tprg.ru/IAbi
#swiftui
👍3
Создаём приложение с прогнозом погоды на Flutter
Для реализации проекта вам понадобится:
— любая среда разработки, в которой установлен Flutter SDK,
— аккаунт на сайте Tomorrow.io для доступа к данным о погоде,
— базовое понимание Dart и Flutter.
В приложение всего один экран, на котором отображается текущая погода и ежедневный прогноз на 4 дня для определенного местоположения. В этой статье автор подробно разобрал процесс разработки:
https://habr.com/ru/post/656033/
#flutter
Для реализации проекта вам понадобится:
— любая среда разработки, в которой установлен Flutter SDK,
— аккаунт на сайте Tomorrow.io для доступа к данным о погоде,
— базовое понимание Dart и Flutter.
В приложение всего один экран, на котором отображается текущая погода и ежедневный прогноз на 4 дня для определенного местоположения. В этой статье автор подробно разобрал процесс разработки:
https://habr.com/ru/post/656033/
#flutter
👍13
Иерархия модулей в Android
В многомодульном приложении разработчики могут сталкиваться с проблемами в зависимостях между модулями или навигации по проекту.
Для улучшения скорости сборки проекта автор статьи:
— разделил модули на типы,
— выстроил правила подключения модулей между собой для контроля зависимостей,
— переименовал модули, чтобы связать их нейминг с положением в проекте.
Подробнее о том, как выстроить связи между модулями в Android:
https://tprg.ru/F4Sl
#android
В многомодульном приложении разработчики могут сталкиваться с проблемами в зависимостях между модулями или навигации по проекту.
Для улучшения скорости сборки проекта автор статьи:
— разделил модули на типы,
— выстроил правила подключения модулей между собой для контроля зависимостей,
— переименовал модули, чтобы связать их нейминг с положением в проекте.
Подробнее о том, как выстроить связи между модулями в Android:
https://tprg.ru/F4Sl
#android
👍13❤1
Google празднует 5-летие с Kotlin
Прошло 5 лет с того момента, как на Google I/O объявили о поддержке Kotlin в Android Studio. В честь этого события в блоге Android Developers вышла статья о проделанной работе Kotlin Foundation за эти годы.
В статье сотрудники Google и JetBrains поделились своим мнением о Kotlin, Jetpack Compose, Android KTX и рассказали о перспективах дальнейшего развития Kotlin.
#kotlin #android
Прошло 5 лет с того момента, как на Google I/O объявили о поддержке Kotlin в Android Studio. В честь этого события в блоге Android Developers вышла статья о проделанной работе Kotlin Foundation за эти годы.
В статье сотрудники Google и JetBrains поделились своим мнением о Kotlin, Jetpack Compose, Android KTX и рассказали о перспективах дальнейшего развития Kotlin.
#kotlin #android
YouTube
5 years of Kotlin on Android #Hi5KotlinOnAndroid
We’re celebrating 5 years of Kotlin support for Android! Join us by sharing your Kotlin story using hashtag #Hi5KotlinAndroid and read our blog post for a trip down memory lane→ https://goo.gle/3w89Q8S
Subscribe to Android Developers → https://goo.gle/AndroidDevs
Subscribe to Android Developers → https://goo.gle/AndroidDevs
👍30🎉6👎3🔥1💩1
Реализация паттерна State Machine и MVI
Наверняка вы слышали про паттерн State Machine, который часто сравнивают с шаблоном State. Данный паттерн используется для создания объектов, поведение которых меняется в зависимости от состояния. Сам набор этих состояний предопределён и конечен.
В этой серии статей разбирается шаблон State Machine с архитектурой MVI:
Часть 1: https://tprg.ru/EiVB
Часть 2: https://tprg.ru/taGk
Часть 3: https://tprg.ru/YUql
#android
Наверняка вы слышали про паттерн State Machine, который часто сравнивают с шаблоном State. Данный паттерн используется для создания объектов, поведение которых меняется в зависимости от состояния. Сам набор этих состояний предопределён и конечен.
В этой серии статей разбирается шаблон State Machine с архитектурой MVI:
Часть 1: https://tprg.ru/EiVB
Часть 2: https://tprg.ru/taGk
Часть 3: https://tprg.ru/YUql
#android
👍6
Вышли новые беты для разработчиков iOS
— iOS 16 beta 7 — больших изменений нет, но Apple исправила некоторые баги в: Airplay, SwiftUI, Accessibility. Некоторые методы в UIViewController объявили устаревшими и заменили, как и MKMapLandscape в Maps. Детальнее: https://tprg.ru/yOCX
Также вчера выпустили:
— iPadOS 16 beta 7,
— watchOS 9 beta 7,
— Xcode 14 beta 6.
#ios
— iOS 16 beta 7 — больших изменений нет, но Apple исправила некоторые баги в: Airplay, SwiftUI, Accessibility. Некоторые методы в UIViewController объявили устаревшими и заменили, как и MKMapLandscape в Maps. Детальнее: https://tprg.ru/yOCX
Также вчера выпустили:
— iPadOS 16 beta 7,
— watchOS 9 beta 7,
— Xcode 14 beta 6.
#ios
👍5💩3👎1
Анимация Lottie на Kotlin
Библиотека LottieFiles использует анимации, экспортированные в виде файлов JSON из Adobe After Effect. С помощью этой библиотеки вы можете добавить любую анимацию в ваш проект.
В этом видео разбирается, как использовать Lottie:
https://youtu.be/1pEyWkTVwBY
#kotlin
Библиотека LottieFiles использует анимации, экспортированные в виде файлов JSON из Adobe After Effect. С помощью этой библиотеки вы можете добавить любую анимацию в ваш проект.
В этом видео разбирается, как использовать Lottie:
https://youtu.be/1pEyWkTVwBY
#kotlin
👍29💩3❤🔥2🤡2
This media is not supported in your browser
VIEW IN TELEGRAM
Как создать Slack-приложение на Android
С помощью Jetpack Compose и Stream Chat SDK можно реализовать своё приложение, похожее на Slack. Внутри проекта также используются корутины и библиотека Hilt.
Исходники: https://github.com/GetStream/stream-slack-clone-android
#android
С помощью Jetpack Compose и Stream Chat SDK можно реализовать своё приложение, похожее на Slack. Внутри проекта также используются корутины и библиотека Hilt.
Исходники: https://github.com/GetStream/stream-slack-clone-android
#android
👍11
Обход средств защиты в iOS-приложениях
На Хабре вышла интересная статья об инструментах, которые помогают обходить средства защиты Jailbreak Detection и SSL-pinning.
Для обхода проверок на Jailbreak автор использовал специальное приложение SecureStorev2, где установил твики A-Bypass и Liberty. Также в статье был протестирован скрипт из Frida CodeShare для байпаса и приведены примеры обхода вручную:
https://habr.com/ru/company/dsec/blog/676094/
#ios
На Хабре вышла интересная статья об инструментах, которые помогают обходить средства защиты Jailbreak Detection и SSL-pinning.
Для обхода проверок на Jailbreak автор использовал специальное приложение SecureStorev2, где установил твики A-Bypass и Liberty. Также в статье был протестирован скрипт из Frida CodeShare для байпаса и приведены примеры обхода вручную:
https://habr.com/ru/company/dsec/blog/676094/
#ios
👍10
Подборка актуальных вакансий
— iOS-разработчик
Где: удалённо
Опыт: можно без опыта
— Android-разработчик
Где: Удалённо
Опыт: от 2 лет
— iOS-разработчик
Где: Москва, Санкт-Петербург, Казань, Пермь, можно удалённо
Опыт: от 2 лет
— Senior Android-разработчик
Где: Москва
Опыт: от 3 лет
— Senior iOS-разработчик
Где: Москва
Опыт: от 3 лет
— Senior Android-разработчик
Где: Москва, можно удалённо
Опыт: от 3 лет
— Middle iOS-разработчик
Где: Москва
Опыт: от 3 лет
#вакансии #работа
— 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
В этой статье автор делится опытом по исправлению неподдерживаемых функции и 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
Используя 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
В этой статье пошаговое руководство как создать собственный 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
Kotlin Symbol Processing (KSP) — это упрощённый API для разработки легковесных плагинов компиляции и процессоров аннотаций. KSP похож на Kotlin Annotation Processing Tool, но работает быстрее.
В статье рассматривается реализация KSP с использованием аннотаций, SymbolProcessor, Resolver и KotlinPoet:
https://tprg.ru/OgZQ
#kotlin #android
👍4💩2❤1
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
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
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
— 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
Плагин Danger запускается во время процесса CI и показывает все ошибки сборки, предупреждения или результаты UI тестов, помогая разработчику не писать однотипные комментарии о кодстайле и ошибках.
Команда из Lamoda уже используют Danger в своих проектах, чтобы упростить ревью пул-реквестов. Разработчик Татьяна Родионова поделилась опытом настройки Danger и рассказала с какими сложностями она столкнулась:
https://habr.com/ru/company/lamoda/blog/681564/
#android
👍3