Понимаем аннотации Hilt за 5 минут
Hilt - это библиотека инъекции зависимостей для Android, которая позволяет сократить количество ручных инъекций зависимостей в вашем проекте. Она построена на основе хорошо зарекомендовавшей себя библиотеки Dagger2.
Аннотации Hilt - это специальные слова или фразы, которые используются для того, чтобы помочь библиотеке Hilt правильно работать в Android-проекте. В этом руководстве мы расскажем о некоторых основных аннотациях, с которыми вы столкнетесь в любом проекте с инъекцией Hilt, а также приведем примеры кода.
Статья: https://proandroiddev.com/5-minute-guide-on-understanding-hilt-annotations-50fe33b1919b
Платформа: Android
Hilt - это библиотека инъекции зависимостей для Android, которая позволяет сократить количество ручных инъекций зависимостей в вашем проекте. Она построена на основе хорошо зарекомендовавшей себя библиотеки Dagger2.
Аннотации Hilt - это специальные слова или фразы, которые используются для того, чтобы помочь библиотеке Hilt правильно работать в Android-проекте. В этом руководстве мы расскажем о некоторых основных аннотациях, с которыми вы столкнетесь в любом проекте с инъекцией Hilt, а также приведем примеры кода.
Статья: https://proandroiddev.com/5-minute-guide-on-understanding-hilt-annotations-50fe33b1919b
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Ловушки и меры борьбы с аномальными вызовами onAppear в SwiftUI
onAppear - чрезвычайно важный метод жизненного цикла в SwiftUI, используемый для внедрения ключевой логики при отображении представления. Поскольку экземпляры представлений могут создаваться и перестраиваться часто, разработчики часто предпочитают подготавливать данные и выполнять операции инициализации в этом методе. Теоретически, вызов этих методов жизненного цикла должен быть предсказуемым и последовательным. Однако в некоторых конкретных сценариях onAppear может вызываться неожиданно и без необходимости. Это может не только привести к снижению производительности, но и вызвать неконтролируемые изменения в состоянии приложения. В этой статье мы раскроем эту легко упускаемую из виду ловушку поведения SwiftUI и предложим временные меры борьбы с ней.
Статья: https://fatbobman.com/en/posts/traps-and-countermeasures-for-abnormal-onappear-calls-in-swiftui/
Платформа: iOS
onAppear - чрезвычайно важный метод жизненного цикла в SwiftUI, используемый для внедрения ключевой логики при отображении представления. Поскольку экземпляры представлений могут создаваться и перестраиваться часто, разработчики часто предпочитают подготавливать данные и выполнять операции инициализации в этом методе. Теоретически, вызов этих методов жизненного цикла должен быть предсказуемым и последовательным. Однако в некоторых конкретных сценариях onAppear может вызываться неожиданно и без необходимости. Это может не только привести к снижению производительности, но и вызвать неконтролируемые изменения в состоянии приложения. В этой статье мы раскроем эту легко упускаемую из виду ловушку поведения SwiftUI и предложим временные меры борьбы с ней.
Статья: https://fatbobman.com/en/posts/traps-and-countermeasures-for-abnormal-onappear-calls-in-swiftui/
Платформа: iOS
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Ifrit - это библиотека нечеткого (fuzzy) поиска, написанная на чистом Swift
Алгоритм нечеткого поиска предназначен для поиска приблизительных совпадений по заданному поисковому запросу. Допустим, у вас есть список товаров, и пользователь ищет «Czy Swetr». Точное совпадение ничего не даст, но нечеткий поиск найдет «Cozy Sweater». Если вам нужно точное совпадение - используйте стандартную функцию .filter { } вместо этой библиотеки.
Преимущества Ifrit:
• Суперлегкий
• Никаких зависимостей
• Поддерживает MacOS, iOS, visionOS, watchOS, twOS, Linux
• Асинхронный поиск (async/await + callbacks)
• Поддерживает выделения текста (AttributedString)
• Покрыт тестами
Ifrit на GitHub: https://github.com/ukushu/Ifrit
Платформа: iOS
⭐️: 33
Алгоритм нечеткого поиска предназначен для поиска приблизительных совпадений по заданному поисковому запросу. Допустим, у вас есть список товаров, и пользователь ищет «Czy Swetr». Точное совпадение ничего не даст, но нечеткий поиск найдет «Cozy Sweater». Если вам нужно точное совпадение - используйте стандартную функцию .filter { } вместо этой библиотеки.
Преимущества Ifrit:
• Суперлегкий
• Никаких зависимостей
• Поддерживает MacOS, iOS, visionOS, watchOS, twOS, Linux
• Асинхронный поиск (async/await + callbacks)
• Поддерживает выделения текста (AttributedString)
• Покрыт тестами
Ifrit на GitHub: https://github.com/ukushu/Ifrit
Платформа: iOS
⭐️: 33
❤1
Как заставить крутиться таймер – инструкция для iOS-разработчиков
Кажется, что таймер – простая для реализации вещь. Но если добавить сюда сжатые сроки, код (рефакторинг которого часто откладывается по разным причинам), пласты бизнес-логики и UI-элементы – получим нетривиальную задачу.
Статья: https://habr.com/ru/companies/ecom_tech/articles/867660/
Платформа: iOS
Кажется, что таймер – простая для реализации вещь. Но если добавить сюда сжатые сроки, код (рефакторинг которого часто откладывается по разным причинам), пласты бизнес-логики и UI-элементы – получим нетривиальную задачу.
Статья: https://habr.com/ru/companies/ecom_tech/articles/867660/
Платформа: iOS
😁6🔥1
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS En) Avoid Crashes in Swift: How Overflow Operators Work•
(iOS En) Stacked Cards - Looping Cards - SwiftUI•
(iOS En) First Look at Xcode 16.2: New Swift Testing Feature•
(iOS En) SwiftUI Searchable Modifier: Build a Search Feature in 15 Minutes•
(And Ru) Публикация Android и KMP библиотеки в Maven Central•
(And Ru) Запускаем мобильные UI-тесты эффективно•
(And En) Now in Android: 112 - Android 16 Developer Preview 1, Passkeys Spotlight Week, and more•
(And En) Designing apps for Android XR•
(And En) Adapting Android apps for XR•
(And En) Build immersive apps & experiences with OpenXR & Unity•
(And En) How to Draw On a Canvas In Jetpack Compose•
(And En) Multi-dollar String Interpolation in Kotlin•
(Crs Ru) Flutter Dev Podcast #49: многомодульность на Flutter•
(Crs En) Remind users to Rate your App - Compose Multiplatform•
(Dev Ru) Compose и SwiftUI: найди 10 отличий•
(Dev Ru) Как мы писали проигрыватель с нуля под каждую платформу•
(Dev Ru) Как ВКонтакте измеряет перфоманс приложений•
(Dev Ru) Очевидные и неочевидные дыры безопасности в мобильной разработке•
(Dev Ru) Страх и ненависть в мобильных автотестах. Строим своё облачное решение•
(Dev Ru) Лучший UI фреймворк для разработки на Java — JavaFx, Swing, UI разработка#ios #android #mobile #video
❤1
Apple Watch на Android
На рынке существует немало умных часов, предлагающих решения для мониторинга здоровья, но Apple Watch уже много лет лидируют по точности отслеживания частоты сердечных сокращений, сна и физических нагрузок; на самом деле часы Apple Watch четырехлетней давности точнее, чем большинство последних коммерческих конкурентов.
Единственная проблема заключается в том, что я решил больше не давать денег Apple несколько лет назад, после того как мне надоели их огороженный сад, злоупотребление монополией, вопиющий маркетинг в стиле aspiration porn, препятствование ремонту и т.д.
Статья: https://abishekmuthian.com/apple-watch-with-android/
Платформа: Android
На рынке существует немало умных часов, предлагающих решения для мониторинга здоровья, но Apple Watch уже много лет лидируют по точности отслеживания частоты сердечных сокращений, сна и физических нагрузок; на самом деле часы Apple Watch четырехлетней давности точнее, чем большинство последних коммерческих конкурентов.
Единственная проблема заключается в том, что я решил больше не давать денег Apple несколько лет назад, после того как мне надоели их огороженный сад, злоупотребление монополией, вопиющий маркетинг в стиле aspiration porn, препятствование ремонту и т.д.
Статья: https://abishekmuthian.com/apple-watch-with-android/
Платформа: Android
👍1👎1
AniVu - универсальное приложение для подкастов на Android, позволяющее просматривать RSS и воспроизводить медиафайлы. Внутри MVI, Jetpack Compose, корутины и Flow, Material You, ViewModel, Room, Paging 3, Hilt и пр.
AniVu на GitHub: https://github.com/SkyD666/AniVu
Платформа: Android
⭐️: 855
AniVu на GitHub: https://github.com/SkyD666/AniVu
Платформа: Android
⭐️: 855
Создание Custom Layout в Jetpack Compose
Сегодня я расскажу о том, как создавать Custom Layout в Jetpack Compose, а также мы решим одну связанную с данной темой практическую задачку. Создание Custom Layout может показаться чем-то сложным на первый взгляд, но я постараюсь все объяснить максимально понятно и подробно. Итак, приступим!
Статья: https://habr.com/ru/articles/867822/
Платформа: Android
Сегодня я расскажу о том, как создавать Custom Layout в Jetpack Compose, а также мы решим одну связанную с данной темой практическую задачку. Создание Custom Layout может показаться чем-то сложным на первый взгляд, но я постараюсь все объяснить максимально понятно и подробно. Итак, приступим!
Статья: https://habr.com/ru/articles/867822/
Платформа: Android
Как в Duolingo ускорили сборки для Android и iOS на 50%
Представьте себе, что вы ждете каждой проверки кода до и после слияния более 50 минут. Звучит мучительно, верно? А теперь представьте, что вы проходите через эту каторгу 200 с лишним раз в неделю. Такова была наша реальность, пока мы, команда Test and Release Infrastructure (TRI), не решили, что хватит.
Переходим к сегодняшнему дню. Эти 50-минутные ожидания исчезли. Время сборки Android и iOS теперь составляет менее 20 минут. Вот подробная информация о том, как мы добились этого волшебства — да, это потребовало веселых экспериментов и немного пота (но, к счастью, без слез).
Статья: https://apptractor.ru/info/articles/kak-my-uskorili-sborki-dlya-android-i-ios-na-50.html
Платформа: разработка
Представьте себе, что вы ждете каждой проверки кода до и после слияния более 50 минут. Звучит мучительно, верно? А теперь представьте, что вы проходите через эту каторгу 200 с лишним раз в неделю. Такова была наша реальность, пока мы, команда Test and Release Infrastructure (TRI), не решили, что хватит.
Переходим к сегодняшнему дню. Эти 50-минутные ожидания исчезли. Время сборки Android и iOS теперь составляет менее 20 минут. Вот подробная информация о том, как мы добились этого волшебства — да, это потребовало веселых экспериментов и немного пота (но, к счастью, без слез).
Статья: https://apptractor.ru/info/articles/kak-my-uskorili-sborki-dlya-android-i-ios-na-50.html
Платформа: разработка
Назад в будущее: превью Compose для представлений на основе XML
В отличие от этого, старые представления Android на основе XML позволяют предварительно просматривать макеты. Но они ограничиваются статичными макетами с содержимым, не представляющим никакой реальной логики или данных - они настолько просты, насколько это возможно.
Так что если некоторые части вашего приложения все еще полагаются на представления на основе XML, вы можете упустить всю мощь предварительных просмотров Compose... или нет?
Ведь Compose Preview действительно можно использовать с XML-представлениями!
Статья: https://apptractor.ru/info/articles/nazad-v-buduschee-prevyu-compose-dlya-predstavleniy-na-osnove-xml.html
Платформа: Android
В отличие от этого, старые представления Android на основе XML позволяют предварительно просматривать макеты. Но они ограничиваются статичными макетами с содержимым, не представляющим никакой реальной логики или данных - они настолько просты, насколько это возможно.
Так что если некоторые части вашего приложения все еще полагаются на представления на основе XML, вы можете упустить всю мощь предварительных просмотров Compose... или нет?
Ведь Compose Preview действительно можно использовать с XML-представлениями!
Статья: https://apptractor.ru/info/articles/nazad-v-buduschee-prevyu-compose-dlya-predstavleniy-na-osnove-xml.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
The SwiftUI Christmas Tree - новогодняя елка с анимацией на чистом SwiftUI. 31 декабря обещают добавить фейерверков.
The SwiftUI Christmas Tree на GitHub: https://github.com/GetStream/SwiftUIChristmasTree
Платформа: iOS
⭐️: 50
The SwiftUI Christmas Tree на GitHub: https://github.com/GetStream/SwiftUIChristmasTree
Платформа: iOS
⭐️: 50
Управление Xcode симулятором из симулятора
А зачем нам это вообще может понадобиться, управлять симулятором из симулятора ? Я придумал теоретический список, где нам это может пригодиться:
1. Управление симулятором во время тестов
2. Симулировать app линк во время UI теста
3. Послать пуш во время UI теста
4. Интеграция с другими приложениями
Статья: https://habr.com/ru/articles/868846/
Платформа: iOS
А зачем нам это вообще может понадобиться, управлять симулятором из симулятора ? Я придумал теоретический список, где нам это может пригодиться:
1. Управление симулятором во время тестов
2. Симулировать app линк во время UI теста
3. Послать пуш во время UI теста
4. Интеграция с другими приложениями
Статья: https://habr.com/ru/articles/868846/
Платформа: iOS
Секретная акция, или Как выйти за пределы UICollectionView
В этой статье я расскажу, как мы придумали и реализовали акцию с игровой механикой. Поделюсь техническими подробностями, расскажу про анимации, а также про то, как необычно можно использовать стандартное поведение коллекции.
Статья: https://habr.com/ru/companies/dododev/articles/855560/
Платформа: iOS
В этой статье я расскажу, как мы придумали и реализовали акцию с игровой механикой. Поделюсь техническими подробностями, расскажу про анимации, а также про то, как необычно можно использовать стандартное поведение коллекции.
Статья: https://habr.com/ru/companies/dododev/articles/855560/
Платформа: iOS
🔥1
Рефлексия замедляет работу вашего кода?
Когда я был начинающим программистом, мне всегда говорили, что отражение (рефлексия, reflection) - это медленно и его следует избегать, но я не мог наблюдать эту медлительность в реальных измерениях. Поэтому я решил сделать несколько бенчмарков, чтобы посмотреть, как отражение работает на самом деле, и, как оказалось, оно медленное, только если сравнивать его с обычными вызовами, которые чрезвычайно быстры. Если же сравнивать его с другими популярными операциями, такими как логирование или синхронизация, то оно не такое уж и медленнное.
Статья: https://kt.academy/article/benchmark-reflection
Платформа: Kotlin/Android
Когда я был начинающим программистом, мне всегда говорили, что отражение (рефлексия, reflection) - это медленно и его следует избегать, но я не мог наблюдать эту медлительность в реальных измерениях. Поэтому я решил сделать несколько бенчмарков, чтобы посмотреть, как отражение работает на самом деле, и, как оказалось, оно медленное, только если сравнивать его с обычными вызовами, которые чрезвычайно быстры. Если же сравнивать его с другими популярными операциями, такими как логирование или синхронизация, то оно не такое уж и медленнное.
Статья: https://kt.academy/article/benchmark-reflection
Платформа: Kotlin/Android
ИИ зрение на Android: CameraX ImageAnalysis + MediaPipe + Compose
На прошлой неделе мы рассмотрели основы библиотеки CameraX. Это заложило основу для чего-то действительно интересного... ИИ-зрения! Теперь мы можем использовать ваше Android-устройство для интерпретации и понимания окружающего нас физического мира.
ИИ-зрение обладает невероятным потенциалом, например, распознавание того, что изображено на фотографии, разделение/маскировка областей на изображениях, распознавание позы тела, улыбки и других жестов. И все это может работать на вашем телефоне - нет необходимости в доступе к интернету или передаче данных с камеры третьей стороне.
Статья: https://proandroiddev.com/ai-vision-on-android-camerax-imageanalysis-mediapipe-compose-db6afb738248
Платформа: Android
На прошлой неделе мы рассмотрели основы библиотеки CameraX. Это заложило основу для чего-то действительно интересного... ИИ-зрения! Теперь мы можем использовать ваше Android-устройство для интерпретации и понимания окружающего нас физического мира.
ИИ-зрение обладает невероятным потенциалом, например, распознавание того, что изображено на фотографии, разделение/маскировка областей на изображениях, распознавание позы тела, улыбки и других жестов. И все это может работать на вашем телефоне - нет необходимости в доступе к интернету или передаче данных с камеры третьей стороне.
Статья: https://proandroiddev.com/ai-vision-on-android-camerax-imageanalysis-mediapipe-compose-db6afb738248
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
App Sizer - это инструмент от Grab, предназначенный для анализа загружаемого размера приложения для Android. Предоставляя подробную информацию о составе бинарного файла приложения, App Sizer помогает разработчикам выявить области для уменьшения размера, что в конечном итоге повышает показатели привлечения и удержания пользователей.
App Sizer предлагает всесторонний анализ, включая:
• Общий размер загрузки приложений
• Детальная информация по размеру
• Размер по командам
• Размер по модулям
• Размер библиотек
• Список больших файлов
Есть плагин для Gradle и CLI утилита. Подробнее в статье.
App Sizer на GitHub: https://github.com/grab/App-Sizer
Платформа: Android
⭐️: 145
App Sizer предлагает всесторонний анализ, включая:
• Общий размер загрузки приложений
• Детальная информация по размеру
• Размер по командам
• Размер по модулям
• Размер библиотек
• Список больших файлов
Есть плагин для Gradle и CLI утилита. Подробнее в статье.
App Sizer на GitHub: https://github.com/grab/App-Sizer
Платформа: Android
⭐️: 145
👍1
Orbit MVI с сахаром: вкусный фреймворк для однородной архитектуры
Пойдем, расскажу тебе про фреймворк OrbitMVI. Узнала я о нем от своего лида: он делегировал мне задачу заменить наш самодельный Redux на Orbit, чтобы в нашем приложении архитектура стала удобнее и однороднее.
Статья: https://habr.com/ru/companies/ru_mts/articles/868328/
Платформа: Android
Пойдем, расскажу тебе про фреймворк OrbitMVI. Узнала я о нем от своего лида: он делегировал мне задачу заменить наш самодельный Redux на Orbit, чтобы в нашем приложении архитектура стала удобнее и однороднее.
Статья: https://habr.com/ru/companies/ru_mts/articles/868328/
Платформа: Android
SwiftUI: всё, что вам нужно знать о модификаторе containerRelativeFrame (и немного больше)
На WWDC 2023 компания Apple представила модификатор представления
Статья: https://habr.com/ru/companies/otus/articles/869346/
Платформа: iOS
На WWDC 2023 компания Apple представила модификатор представления
containerRelativeFrame для SwiftUI. Этот модификатор упрощает некоторые операции размещения элементов на экране, которые ранее было сложно выполнить обычными методами. В этой статье мы подробно рассмотрим модификатор containerRelativeFrame, его определение, правила компоновки, примеры использования и важные соображения. Чтобы еще больше расширить наше понимание его функциональных возможностей, в конце статьи мы также создадим обратно совместимую реплику для старых версий SwiftUI.Статья: https://habr.com/ru/companies/otus/articles/869346/
Платформа: iOS
Как мы работаем с производительностью Threads для iOS
Когда в 2023 году **** запустила Threads, оно стало самым быстрорастущим приложением в истории, набрав 100 миллионов пользователей всего за пять дней. Сейчас число ежемесячных международных пользователей приложения превысило 300 миллионов, а команда разработчиков расширилась от небольшой группы инженеров-отщепенцев до организации с более чем сотней соавторов.
Если оглянуться на то, каким было приложение Threads для iOS год назад, то многое изменилось: мы вышли в Европу, интегрировались с Fediverse, запустили публичный API, разработали множество новых способов для людей поделиться тем, что происходит в их мире, и внедрили новые методы для поиска и чтения лучшего контента. Мы даже отпраздновали наш первый день рождения с праздничными шляпами и иконками приложения!
Чтобы приложение было простым и приятным в использовании, а также чтобы его можно было масштабировать с быстро растущей базой пользователей и командой разработчиков, оно должно быть производительным. Вот как мы думаем о производительности приложения Threads для iOS, чему мы научились за первый год работы и как мы решали некоторые из наших самых больших проблем с производительностью.
Статья: https://apptractor.ru/info/articles/kak-my-rabotaem-s-proizvoditelnostyu-threads-dlya-ios.html
Платформа: iOS
Когда в 2023 году **** запустила Threads, оно стало самым быстрорастущим приложением в истории, набрав 100 миллионов пользователей всего за пять дней. Сейчас число ежемесячных международных пользователей приложения превысило 300 миллионов, а команда разработчиков расширилась от небольшой группы инженеров-отщепенцев до организации с более чем сотней соавторов.
Если оглянуться на то, каким было приложение Threads для iOS год назад, то многое изменилось: мы вышли в Европу, интегрировались с Fediverse, запустили публичный API, разработали множество новых способов для людей поделиться тем, что происходит в их мире, и внедрили новые методы для поиска и чтения лучшего контента. Мы даже отпраздновали наш первый день рождения с праздничными шляпами и иконками приложения!
Чтобы приложение было простым и приятным в использовании, а также чтобы его можно было масштабировать с быстро растущей базой пользователей и командой разработчиков, оно должно быть производительным. Вот как мы думаем о производительности приложения Threads для iOS, чему мы научились за первый год работы и как мы решали некоторые из наших самых больших проблем с производительностью.
Статья: https://apptractor.ru/info/articles/kak-my-rabotaem-s-proizvoditelnostyu-threads-dlya-ios.html
Платформа: iOS
AnimeTV - это приложение для Android TV для просмотра любимых аниме-сериалов и фильмов на вашем телевизоре. Приложение также работает на Android устройствах без телевизора (телефоны и планшеты) с некоторыми ограничениями пользовательского интерфейса. В качестве источников используются сторонние сайты, так что все может прекратить работать в один прекрасный момент.
AnimeTV на GitHub: https://github.com/amarullz/AnimeTV
Платформа: Android
⭐️: 767
AnimeTV на GitHub: https://github.com/amarullz/AnimeTV
Платформа: Android
⭐️: 767
👍1
Core - простая и легкая однонаправленная архитектура на Swift, которая не зависит от других фреймворков, это фреймворк для создания реактивных приложений, вдохновленный ReactorKit, Redux. Core является независимым, что означает, что вы можете импортировать все, что захотите, например Combine, RxSwift. Это очень легкая, простая и безумно быстрая архитектура по сравнению с аналогичными решениями.
Хотя CoreEngine предоставляет традиционные реактивные подходы и паттерны управления состояниями, автор настоятельно рекомендует использовать AsyncCore для современной, асинхронной и более эффективной работы с состояниями. AsyncCore использует структурированный параллелизм Swift с помощью async/await, обеспечивая чистый и интуитивно понятный способ управления обновлениями состояния, обработки побочных эффектов и обеспечения безопасности потоков с помощью модели Actor в Swift.
Core на GitHub: https://github.com/sobabear/CoreEngine
Платформа: iOS
⭐️: 50
Хотя CoreEngine предоставляет традиционные реактивные подходы и паттерны управления состояниями, автор настоятельно рекомендует использовать AsyncCore для современной, асинхронной и более эффективной работы с состояниями. AsyncCore использует структурированный параллелизм Swift с помощью async/await, обеспечивая чистый и интуитивно понятный способ управления обновлениями состояния, обработки побочных эффектов и обеспечения безопасности потоков с помощью модели Actor в Swift.
Core на GitHub: https://github.com/sobabear/CoreEngine
Платформа: iOS
⭐️: 50