Побочные эффекты Jetpack Compose в подробностях
Цель побочных эффектов в Jetpack Compose — обеспечить возможность выполнения операций, не связанных с пользовательским интерфейсом, которые изменяют состояние приложения вне Composable-функции контролируемым и предсказуемым образом.
Jetpack Compose значительно упростил разработку пользовательских интерфейсов в Android, но все же важно понимать, как правильно управлять эффектами для повышения производительности. В этой статье мы рассмотрим три важные функции Composable, которые помогают нам эффективно управлять эффектами пользовательского интерфейса: SideEffect, LaunchedEffect и DisposableEffect.
https://medium.com/@mortitech/exploring-side-effects-in-compose-f2e8a8da946b
#Android
👉 @developer_mobila
Цель побочных эффектов в Jetpack Compose — обеспечить возможность выполнения операций, не связанных с пользовательским интерфейсом, которые изменяют состояние приложения вне Composable-функции контролируемым и предсказуемым образом.
Jetpack Compose значительно упростил разработку пользовательских интерфейсов в Android, но все же важно понимать, как правильно управлять эффектами для повышения производительности. В этой статье мы рассмотрим три важные функции Composable, которые помогают нам эффективно управлять эффектами пользовательского интерфейса: SideEffect, LaunchedEffect и DisposableEffect.
https://medium.com/@mortitech/exploring-side-effects-in-compose-f2e8a8da946b
#Android
👉 @developer_mobila
👍3
Осваиваем фреймворк Observation в Swift
В этой статье мы узнаем, как использовать фреймворк Observation для обработки потоков данных в наших приложениях.
https://swiftwithmajid.com/2023/10/03/mastering-observable-framework-in-swift/
#ios
👉 @developer_mobila
В этой статье мы узнаем, как использовать фреймворк Observation для обработки потоков данных в наших приложениях.
https://swiftwithmajid.com/2023/10/03/mastering-observable-framework-in-swift/
#ios
👉 @developer_mobila
👍1
Как ускорить сборку проекта и не остановить разработку
Доклад о том, как мы применили в iOS-проектах Тинькофф предкомпилированные зависимости в виде XCFramework с использованием CocoaPods, fastlane, GitLab CI и на примере проекта Тинькофф Бизнес ускорили холодную сборку до 2 раз.
0:00 Вступление
2:18 План доклада
3:37 «Тинькофф бизнес» в цифрах
6:59 XCFramework
11:46 Публикация XCFramework с CocoaPods
13:14 Builder
14:07 Deploy_xcframework
15:21 Alamofire:podspec
16:45 Transform_podspec
17:59 Интеграция
19:46 Семантическое версионирование
21:09 Обратная совместимость
26:46 Ограничения и советы
32:41 Практика
35:41 Готовый проект
37:40 Заключение
https://www.youtube.com/watch?v=EKKHAp0ZGBU
#ios
👉 @developer_mobila
Доклад о том, как мы применили в iOS-проектах Тинькофф предкомпилированные зависимости в виде XCFramework с использованием CocoaPods, fastlane, GitLab CI и на примере проекта Тинькофф Бизнес ускорили холодную сборку до 2 раз.
0:00 Вступление
2:18 План доклада
3:37 «Тинькофф бизнес» в цифрах
6:59 XCFramework
11:46 Публикация XCFramework с CocoaPods
13:14 Builder
14:07 Deploy_xcframework
15:21 Alamofire:podspec
16:45 Transform_podspec
17:59 Интеграция
19:46 Семантическое версионирование
21:09 Обратная совместимость
26:46 Ограничения и советы
32:41 Практика
35:41 Готовый проект
37:40 Заключение
https://www.youtube.com/watch?v=EKKHAp0ZGBU
#ios
👉 @developer_mobila
YouTube
Как ускорить сборку проекта и не остановить разработку — Сергей Ерохин, Тинькофф
Доклад о том, как мы применили в iOS-проектах Тинькофф предкомпилированные зависимости в виде XCFramework с использованием CocoaPods, fastlane, GitLab CI и на примере проекта Тинькофф Бизнес ускорили холодную сборку до 2 раз.
0:00 Вступление
2:18 План доклада…
0:00 Вступление
2:18 План доклада…
👍3
Как устроена логика навигации флоу в приложении Тинькофф
https://www.youtube.com/watch?v=NWuywNArj6M
#Android
👉 @developer_mobila
https://www.youtube.com/watch?v=NWuywNArj6M
#Android
👉 @developer_mobila
YouTube
Как устроена логика навигации флоу в приложении Тинькофф — Тимур Валиев, Тинькофф
Тимур рассказал, как мы сделали свой DSL для того, чтобы строить логику навигации в наших флоу в приложении Тинькофф.
#тинькофф #ит_фест #mobiledev
#тинькофф #ит_фест #mobiledev
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Siri Intents for WatchOS
Building custom intents for WatchOS apps: A step-by-step guide.
https://medium.com/simform-engineering/siri-intents-for-watchos-b45798950f2c
#ios
👉 @developer_mobila
Building custom intents for WatchOS apps: A step-by-step guide.
https://medium.com/simform-engineering/siri-intents-for-watchos-b45798950f2c
#ios
👉 @developer_mobila
👍2
Media is too big
VIEW IN TELEGRAM
Как создать пользовательский экран в SwiftUI
Имейте в виду, что это действительно работает в iOS 15! И хотя многие в комментариях хотят указать на более нативное решение, оно было представлено в iOS 16. Итак, это решение, которое также включает в себя довольно много настроек радиуса углов, цветов и многого другого, потому что вы также можете форкнуть это репо и редактировать его по своему усмотрению :]
https://github.com/fieldday-ai/Modals
#ios
👉 @developer_mobila
Имейте в виду, что это действительно работает в iOS 15! И хотя многие в комментариях хотят указать на более нативное решение, оно было представлено в iOS 16. Итак, это решение, которое также включает в себя довольно много настроек радиуса углов, цветов и многого другого, потому что вы также можете форкнуть это репо и редактировать его по своему усмотрению :]
https://github.com/fieldday-ai/Modals
#ios
👉 @developer_mobila
👍2
Screenshot testing in Compose
Тестирование - неотъемлемая часть любого проекта. Оно позволяет вам с уверенностью выпускать приложение, поддерживая высокий уровень стабильности и качества. Однако тестирование должно проводиться эффективно и обновляться каждый раз, когда в кодовой базе происходят изменения.
https://proandroiddev.com/screenshot-testing-in-compose-f8a7389a7e6
#Android
👉 @developer_mobila
Тестирование - неотъемлемая часть любого проекта. Оно позволяет вам с уверенностью выпускать приложение, поддерживая высокий уровень стабильности и качества. Однако тестирование должно проводиться эффективно и обновляться каждый раз, когда в кодовой базе происходят изменения.
https://proandroiddev.com/screenshot-testing-in-compose-f8a7389a7e6
#Android
👉 @developer_mobila
👍1
Поваренная книга SwiftUI: изображения и кнопки
SwiftUI позволяет невероятно просто добавлять изображения и кнопки в пользовательский интерфейс.
Кнопки необходимы для создания интерактивных элементов в пользовательском интерфейсе. В SwiftUI кнопки создаются с помощью представления Button.
https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/6-add-a-button-in-swiftui
#ios
👉 @developer_mobila
SwiftUI позволяет невероятно просто добавлять изображения и кнопки в пользовательский интерфейс.
Кнопки необходимы для создания интерактивных элементов в пользовательском интерфейсе. В SwiftUI кнопки создаются с помощью представления Button.
https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/6-add-a-button-in-swiftui
#ios
👉 @developer_mobila
👍1
ЗАБУДЬ про UITableView
DiffableDataSource упростит код, отобразит таблицу на основе сделанных снимков и анимирует ячейки
https://www.youtube.com/watch?v=z4vINGVv294
#ios
👉 @developer_mobila
DiffableDataSource упростит код, отобразит таблицу на основе сделанных снимков и анимирует ячейки
https://www.youtube.com/watch?v=z4vINGVv294
#ios
👉 @developer_mobila
YouTube
DiffableDataSource: ЗАБУДЬ про DATASOURCE
Boosty-аккаунт для iOS разработчика:
https://boosty.to/cmdbcmdr
- Ответы на вопросы с собеседований
- Спринт "Координатор"
- Курс "Combine c нуля"
- Курс "iOS разработчик с нуля": Базовые знания
- Принципы SOLID
- Решение задач с CodeWars/LeetCode
Полное…
https://boosty.to/cmdbcmdr
- Ответы на вопросы с собеседований
- Спринт "Координатор"
- Курс "Combine c нуля"
- Курс "iOS разработчик с нуля": Базовые знания
- Принципы SOLID
- Решение задач с CodeWars/LeetCode
Полное…
👍1
Тестирование Android PagingSource
В этой статье я расскажу о том, как протестировать PagingSource.
Зачем тестировать
Тестирование очень важно в разработке. Тестовый код делает вашу кодовую базу стабильной. С тестовым кодом рефакторинг становится проще, потому что после рефакторинга, если все тесты пройдены, вы можете быть уверены, что не создали новую ошибку.
https://ayousuf.hashnode.dev/testing-android-pagingsource
#Android
👉 @developer_mobila
В этой статье я расскажу о том, как протестировать PagingSource.
Зачем тестировать
Тестирование очень важно в разработке. Тестовый код делает вашу кодовую базу стабильной. С тестовым кодом рефакторинг становится проще, потому что после рефакторинга, если все тесты пройдены, вы можете быть уверены, что не создали новую ошибку.
https://ayousuf.hashnode.dev/testing-android-pagingsource
#Android
👉 @developer_mobila
👍1
Force Update Mechanism
В постоянно развивающемся ландшафте мобильных приложений обновление приложения - не просто лучшая практика, это часто необходимость. Будь то критический патч безопасности, выпуск новой функции или простое исправление ошибки, обеспечение того, что ваши пользователи работают с последней версией приложения, может иметь решающее значение как для удобства пользователей, так и для безопасности. Именно здесь в игру вступает концепция "принудительного обновления". Механизм принудительного обновления позволяет заставить пользователей обновить приложение, чтобы продолжить его использование. Это особенно полезно для критических обновлений, которые вы не можете позволить пользователям пропустить.
https://www.manu.show/2023-09-29-force-update-mechanism/
#ios
👉 @developer_mobila
В постоянно развивающемся ландшафте мобильных приложений обновление приложения - не просто лучшая практика, это часто необходимость. Будь то критический патч безопасности, выпуск новой функции или простое исправление ошибки, обеспечение того, что ваши пользователи работают с последней версией приложения, может иметь решающее значение как для удобства пользователей, так и для безопасности. Именно здесь в игру вступает концепция "принудительного обновления". Механизм принудительного обновления позволяет заставить пользователей обновить приложение, чтобы продолжить его использование. Это особенно полезно для критических обновлений, которые вы не можете позволить пользователям пропустить.
https://www.manu.show/2023-09-29-force-update-mechanism/
#ios
👉 @developer_mobila
manu.show
Force Update Mechanism
Implementing a basic force update mechanism in your SwiftUI app
👍2
Rise of Jetpack Media 3 — революция в воспроизведении мультимедиа на Android
https://proandroiddev.com/rise-of-jetpack-media-3-revolutionising-media-playback-on-android-45686bdb648
#Android
👉 @developer_mobila
https://proandroiddev.com/rise-of-jetpack-media-3-revolutionising-media-playback-on-android-45686bdb648
#Android
👉 @developer_mobila
Построение архитектуры дизайна системы Android для эффективной загрузки изображений с помощью чистой архитектуры
В постоянно развивающемся мире разработки мобильных приложений создание хорошо проработанного системного дизайна Android является залогом успеха. В этой статье мы расскажем вам о том, как построить надежную архитектуру дизайна системы Android для эффективной загрузки изображений, используя принципы чистой архитектуры. Мы обсудим, почему хорошо спроектированная система жизненно важна и что может пойти не так, если в вашем проекте отсутствует такая архитектура. Мы также приведем реальные примеры проектов с плохой архитектурой и их последствия.
https://murainoyakubu.medium.com/android-system-design-architecture-on-a-real-life-senario-d35f4e203b51
#Android
👉 @developer_mobila
В постоянно развивающемся мире разработки мобильных приложений создание хорошо проработанного системного дизайна Android является залогом успеха. В этой статье мы расскажем вам о том, как построить надежную архитектуру дизайна системы Android для эффективной загрузки изображений, используя принципы чистой архитектуры. Мы обсудим, почему хорошо спроектированная система жизненно важна и что может пойти не так, если в вашем проекте отсутствует такая архитектура. Мы также приведем реальные примеры проектов с плохой архитектурой и их последствия.
https://murainoyakubu.medium.com/android-system-design-architecture-on-a-real-life-senario-d35f4e203b51
#Android
👉 @developer_mobila
👍1
🕹️ apk.sh
Упрощает реверс инжиниринг приложений для Android, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, восстановление и исправление APK.
Особенности
– патчинг APK для загрузки frida-gadget.so при запуске
– поддержка пакетов приложений/разделенных APK
– разборка ресурсов до почти оригинального вида с помощью apktool
– восстановление декодированных ресурсов обратно в бинарный APK/JAR с помощью apktool
– подпись apk с помощью apksigner
– поддержка нескольких архитектур (arm, arm64, x86, x86_64)
– не требуется рутованное Android-устройство
https://github.com/ax/apk.sh
#Android
👉 @developer_mobila
Упрощает реверс инжиниринг приложений для Android, автоматизируя некоторые повторяющиеся задачи, такие как извлечение, декодирование, восстановление и исправление APK.
Особенности
– патчинг APK для загрузки frida-gadget.so при запуске
– поддержка пакетов приложений/разделенных APK
– разборка ресурсов до почти оригинального вида с помощью apktool
– восстановление декодированных ресурсов обратно в бинарный APK/JAR с помощью apktool
– подпись apk с помощью apksigner
– поддержка нескольких архитектур (arm, arm64, x86, x86_64)
– не требуется рутованное Android-устройство
https://github.com/ax/apk.sh
#Android
👉 @developer_mobila
GitHub
GitHub - ax/apk.sh: Makes reverse engineering Android apps easier, automating repetitive tasks like pulling, decoding, rebuilding…
Makes reverse engineering Android apps easier, automating repetitive tasks like pulling, decoding, rebuilding and patching an APK. - ax/apk.sh
👍2🔥1
Понимаем @ discardableResult в Swift
Атрибут
Swift известен тем, что в нем большое внимание уделяется безопасности типов и читаемости кода. Одним из свойств, соответствующих этим принципам, является атрибут
https://medium.com/mobile-app-development-publication/understanding-discardable-results-in-swift-1bb193738f25
#ios
👉 @developer_mobila
Атрибут
@discardableResult в Swift является ценным инструментом для улучшения читаемости кода и управления функциями, возвращающими значения, которые не всегда нужно использовать.Swift известен тем, что в нем большое внимание уделяется безопасности типов и читаемости кода. Одним из свойств, соответствующих этим принципам, является атрибут
@discardableResult. Этот атрибут позволяет пометить возвращаемое значение функции как «отбрасываемое» (discardable), что означает возможность игнорировать возвращаемое значение, не выдавая предупреждения компилятора. В этой статье мы рассмотрим, что такое отбрасываемый результат, почему он полезен и как эффективно использовать его в Swift.https://medium.com/mobile-app-development-publication/understanding-discardable-results-in-swift-1bb193738f25
#ios
👉 @developer_mobila
👍3
Архитектура Android. Понятно и подробно
Если вы хотите сделать хорошую архитектуру, то используйте эту схему и строго соблюдайте правила, без каких-либо исключений.
https://habr.com/ru/articles/766762/
#Android
👉 @developer_mobila
Если вы хотите сделать хорошую архитектуру, то используйте эту схему и строго соблюдайте правила, без каких-либо исключений.
https://habr.com/ru/articles/766762/
#Android
👉 @developer_mobila
👍4
Чем занимается Android-разработчик, или Хватит уже спрашивать у них алгоритмы
Статья поделена на две части — в первой я описываю работу в команде и какие навыки для этого нужны, во второй части расскажу, что нужно для создания новой функциональности в приложении или для исправления старого. Иначе говоря, первая часть про людей, вторая — про код.
https://habr.com/ru/companies/yandex_praktikum/articles/726540/
#Android
👉 @developer_mobila
Статья поделена на две части — в первой я описываю работу в команде и какие навыки для этого нужны, во второй части расскажу, что нужно для создания новой функциональности в приложении или для исправления старого. Иначе говоря, первая часть про людей, вторая — про код.
https://habr.com/ru/companies/yandex_praktikum/articles/726540/
#Android
👉 @developer_mobila
👍3
Компиляция Record для Android
В Android Developers Blog выходила статья Records in Android Studio Flamingo про то как компиляторы R8/D8 преобразуют классы java.lang.Record. В статье рассказывается как добиться минификации компонентов toString() у Kotlin data-классов. Меня заинтересовала эта тема и я решил чуть более подробно в нее углубиться.
В этом посте я подсвечу некоторые моменты, оставшиеся "между строк" в оригинальной статье. Благодаря чему R8 может переписать метод toString() у Record. В чем разница между Record в Java и Kotlin. Можно ли добиться от Record в Android такой же динамики как в "настольной" JVM. Стоит ли для описания моделей использовать Record'ы вместо data-классов.
https://habr.com/ru/articles/766800/
#Android
👉 @developer_mobila
В Android Developers Blog выходила статья Records in Android Studio Flamingo про то как компиляторы R8/D8 преобразуют классы java.lang.Record. В статье рассказывается как добиться минификации компонентов toString() у Kotlin data-классов. Меня заинтересовала эта тема и я решил чуть более подробно в нее углубиться.
В этом посте я подсвечу некоторые моменты, оставшиеся "между строк" в оригинальной статье. Благодаря чему R8 может переписать метод toString() у Record. В чем разница между Record в Java и Kotlin. Можно ли добиться от Record в Android такой же динамики как в "настольной" JVM. Стоит ли для описания моделей использовать Record'ы вместо data-классов.
https://habr.com/ru/articles/766800/
#Android
👉 @developer_mobila
Хабр
Компиляция Record для Android
В Android Developers Blog выходила статья Records in Android Studio Flamingo про то как компиляторы R8/D8 преобразуют классы java.lang.Record . В статье рассказывается как добиться минификации...
👍4
В AppMetrica появился инструмент прогнозирования LTV и оттока
С помощью Предиктов владельцы и маркетологи мобильных приложений смогут оптимизировать рекламные кампании на пользователей с высоким LTV, находить эффективные рекламные каналы с высокой рентабельностью, а также вовремя начать работу по удержанию пользователей.
https://www.sostav.ru/publication/appmetrica-66491.html
👉 @developer_mobila
С помощью Предиктов владельцы и маркетологи мобильных приложений смогут оптимизировать рекламные кампании на пользователей с высоким LTV, находить эффективные рекламные каналы с высокой рентабельностью, а также вовремя начать работу по удержанию пользователей.
https://www.sostav.ru/publication/appmetrica-66491.html
👉 @developer_mobila
Как использовать TimelineView в SwiftUI
TimelineView в SwiftUI идеально подходит для создания сложных, многоступенчатых анимаций. В этом видео мы узнаем, как его использовать, и рассмотрим несколько различных реализаций.
00:00 Timeline
02:30 Welcome back!
03:37 Xcode 15
04:17 What is TimelineView?
06:56 Why do we need this?
08:16 Example Implementations
11:04 Customize Intervals
12:22 Real Time vs Real-Time
14:07 Pausing Animations
15:53 Timeline Cadence
17:06 Wrapping up
https://www.youtube.com/watch?v=ZmXp6Pd5Elg
#ios
👉 @developer_mobila
TimelineView в SwiftUI идеально подходит для создания сложных, многоступенчатых анимаций. В этом видео мы узнаем, как его использовать, и рассмотрим несколько различных реализаций.
00:00 Timeline
02:30 Welcome back!
03:37 Xcode 15
04:17 What is TimelineView?
06:56 Why do we need this?
08:16 Example Implementations
11:04 Customize Intervals
12:22 Real Time vs Real-Time
14:07 Pausing Animations
15:53 Timeline Cadence
17:06 Wrapping up
https://www.youtube.com/watch?v=ZmXp6Pd5Elg
#ios
👉 @developer_mobila
YouTube
How to use TimelineView in SwiftUI | Advanced Learning #26
The TimelineView in SwiftUI is perfect for making complex, multi-step animations. In this video we will learn how to use it and review a few different implementations.
🤙 WELCOME BACK 🤙
WEBSITE: https://www.swiftful-thinking.com
DISCORD: https://disco…
🤙 WELCOME BACK 🤙
WEBSITE: https://www.swiftful-thinking.com
DISCORD: https://disco…
👍1