Mobile Native ️️ – Telegram
Mobile Native ️️
5.61K subscribers
1.13K photos
20 videos
3 files
1.28K links
Полезные материалы по мобильной разработке. Статьи, подборки, нововведения, анонсы.

Пробустить канал → https://news.1rj.ru/str/mobile_native?boost

Автор: @artemiygreg
iOS / Swift: @swift_tips
Библиотеки и инструменты: @mobile_dev_tools
Митапы: @meetup_today
Download Telegram
The easiest way to implement Firebase RemoteConfig in Android

Простой пример реализации Firebase RemoteConfig.

На самом деле, достаточно мощный инструмент, который позволяет гибко настраивать параметры для конфигурации приложения, сегментировать пользователей по многим параметрам, что может быть полезно для а/б тестов и раскатки фич.

НО, в идеале такой сервис (remote config) для приложения нужно иметь на своём бэке, чтоб снизить риски внешних зависимостей. Особенно важно в текущей ситуации, когда внезапно что-нибудь может перестать работать.

Читать (En)
👍7
Идеальная архитектура. Чем отличается UseCase от Interactor?

Если еще не смотрели новый видос у Лёши Гладкова про архитектуру, обязательно посмотрите. Достаточно подробно разобрал главные правила любой архитектуры и все, основные компоненты Clean Architecture (Repository, DataSource, UseCase, Interactor).

Есть конечно холиварные темы, типа "Нужны интерфейсы или нет" или про те же UseCase`ы и Interactor`ы, но в целом, достаточно полезный разбор. Особенно полезно будет начинающим.
🔥17🤮9👍5
iOS App Modularisation — the Starting Point

Полезная статейка, в которой рассматриваются пожалуй основные и базовые вопросы модуляризации в iOS. Когда начинать разбивать проект на модули, как разделить приложение на модули и какие есть возможные варианты.

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

Подробности и примеры, смотрите/читайте в статье. Пример кода можно посмотреть на GitHub.

Читать (En)
👍6🔥2
Дайджест недели

Новостей интересных за прошедшую неделю особо и не было, за исключением обновления Telegram, в котором запустили подписку Telegram Premium. Стоимость подписки вроде как 449₽/мес, в которую входит: отсутствие рекламы, расшифровка войсов, загрузки файлов до 4 ГБ, какие-то уникальные реакции, премиальные стикеры, анимированные аватары и еще что-то. Хз конечно, может и зайдет, но как будто за платную подписку ожидаешь чего-то большего, чем уникальные реакции, премиальные стикеры и всё такое ))

Android
🤖

• Как сделать Android-приложение тестируемым?
• Achieving Interface segregation in Android using Kotlin extension and inline function
• The easiest way to implement Firebase RemoteConfig in Android
• Android — How to write the best Usecase/Interactors ever!
• How to build a messaging UI for your Android chat app
• Easy View Binding with Kotlin Delegate
• Why should you always test Compose performance in release?
• Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки
• Mirror Effect with Jetpack Compose
• Введение в Jetpack Compose
• Линтинг в Kotlin: полное руководство по настройке и эксплуатации
• Best Architecture for Jetpack Compose
• Jetpack Compose bottom sheet over Android view using Kotlin extension
• Parallax in Jetpack Compose. Just an Illusion!
• Creating a graph in Jetpack Compose
• Android — Spring & Fling Animations with Jetpack compose
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 1/2: Foundation
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 2/2: Components
• Android: Navigating with App Shortcuts

iOS 🍏

• MVI в iOS-приложении
• iOS App Modularisation — the Starting Point
• What are primary associated types in Swift 5.7?
• Using the ‘some’ and ‘any’ keywords to reference generic protocols in Swift 5.7
• Rendering SwiftUI views within UITableView or UICollectionView cells on iOS 16
[Async/await] Как работает Coroutine Model
• RxSwift + PropertyWrapper: инкапсуляция и синтаксический сахар
• Hot Reloading a SwiftUI App
• What’s New in SwiftUI TextField for iOS 16?
• Xcode Cloud — Continuous Integration and Deployment
• Mastering NavigationStack in SwiftUI. Navigator Pattern
• New in iOS 16 — Self-resizing UICollectionView Cells
• How to Reverse Engineer and Patch an iOS Application for Beginners: Part I
• SwiftUI: How to create awesome flip effect with Rotation 3D Effect in 3 seconds

Кроссплатформа / Разработка 💻

• Tests Are The Best Kind Of Documentation
• Идеальная архитектура. Чем отличается UseCase от Interactor?
• Automate CI/CD Pipeline for Mobile App
• Flash Error Messages In Flutter
• Drop Shadow Effect In Flutter
• Как использовать gRPC-клиент в проекте на Kotlin Multiplatform Mobile
• Minimalist Guide to Testing in Flutter
• Curved Line Charts in Flutter

Previous | Next

Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍7🔥1
От LiveData к Flow…

Ребята из команды СберЗдоровье рассказывают про переход от LiveData к Flow для связки ViewModel с View слоем. Ну и как всегда, рассматриваются основные отличия LiveData, различных видов Flow, Channel и что из этого лучше подходит под конкретные задачи.

Читать (Ru)
👍18💩13🐳2
Аналитика в декларативном стиле с поддержкой многомодульности

Интересный вариант реализации отправки событий аналитики в декларативном стиле и многомодульном проекте. С примерами кода, который можно адаптировать по себя.

Читать (Ru)
👍7❤‍🔥2💯1
Common Mistakes in User Experience / User Interfaces

Недавно в соседнем канале закинули 2 интересные статейки про UI/UX, которые решил продублировать сюда.

Статьи не совсем стандартные для моего канала, но весьма полезные. Архитектура архитектурой, но продуманый UX и красивый UI тоже играет большую роль в работоспособности наших приложений.

👉 Bad Bad UI: 10 Common Mistakes in User Interfaces (👏 3.3К)
👉 Bad Bad UX: 20 Common Mistakes in User Experience (👏 1K)

P.S. Поставьте плиз соответствующую реакцию 👍, 🔥 или ❤️, так я пойму стоит размещать в дальнейшем подобные материалы или нет.
👍27🔥63💯1
Улучшаем производительность android-приложения с помощью Baseline profiles

Полезная статья о том, как с помощью новой фичи Baseline profiles ускорить время запуска приложения и повысить производительность. Также, в статье достаточно подробно рассказывается как работает ART, AOT, JIT, Dalvik.

Документация тут: Baseline Profiles
Либа, которую нужно подрубить, для генерации профиля: ProfileInstaller

Читать (Ru)
👍7
Дайджест недели

«Яндекс» открыл разработчикам доступ к своим тестам для проверки технических навыков. Назвали они эту штуку "Диагностика навыков" – по сути, это такой же, обычный собес в Яндекс, только в итоге вы получите финальную оценку вашего технического уровня, подробности тут.

Вы тоже заметили, что Jetpack Compose достаточно быстро стал набирать обороты?)

Android 🤖

От LiveData к Flow…
Аналитика в декларативном стиле с поддержкой многомодульност
Улучшаем производительность android-приложения с помощью Baseline profiles
• Things you can do in Android Studio
• Why I quit Android Development after 10 years and what I plan to do now
• The State of Navigation in Jetpack Compose
• Collections: Maps
• Common Kotlin Coroutines use-cases
• Using Live Templates to Improve Android Development Productivity
• How Kotlin Coroutine works - the brief dive
• Build State-driven UI with MVVM and clean architecture in android.
• Android 13: какие изменения нас ожидают
• Jetpack Compose для тех, кто в танке
• Easing in to Easing Curves in Jetpack Compose
• Koin Annotations 1.0 - Now Stable!
• Полное руководство по тестовым дублерам в Android — Часть 1: Теория
• Kotlin Flow with Clean Architecture and MVVM Pattern in Android
• Difference between getActivity and requireActivity

iOS
🍏

• Announcing the Language Workgroup | Swift
• Async/Await, Combine, Closures: A Guide to Modern Asynchronous Swift
• New in SwiftUI 4: Gauge View
• WWDC NOTES
Swift Charts Examples | GitHub
• SF Symbols 4 variable colors
• Do `any` and `some` help with "Protocol Oriented Testing" at all?
• Method Dispatch
• Copy-on-write
• Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета
• Взаимодействие с alerts и permissions в ui-тестировании iOS
• Refactor a Swift Codebase Using SOLID Principles — in an Iterative Way
• Understanding the “some” and “any” keywords in Swift 5.7
• How to override system appearance in SwiftUI

Кроссплатформа / Разработка
💻

Common Mistakes in User Experience / User Interfaces
• Flutter Google Map With Live Location Tracking — Uber Style
• A List of state management approaches in Flutter
• 5 Untold Features of Kotlin. Hidden features of Kotlin
• Flutter Interview Questions
• Как добавить Isar в проект на Flutter
• Implemented Overlay In Flutter
• Flutter Canvas API: Getting Started
• Minimalist Guide to Testing in Flutter — Part 2 Mocking
• 7 Useful JetBrains IDE Plugins to Make Your Life Easier

Previous | Next

Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍10🤡6❤‍🔥3
Modularising Trendyol Android App for Build Efficiency

Еще одна крутая статья на тему многомодульности в Android. В статье разбираются основные аспекты типа, как повысить эффективность сборки за счет модуляризации, как собираются модули, параллельные Gradle сборки, зависимости модулей, взаимодействие и т.д.

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

Читать (En)
❤‍🔥11👍3
We need to go deeper: диплинки и кодогенерация

Статья от Qiwi, про то, как они организовали обработку диплинков в Android через кодогенерацию.

Подобной реализации еще не встречал, выглядит достаточно прикольно.

Читать (Ru)
👍8🔥2
A Solution for Combining Kotlin Suspend Function + Retrofit

Пример реализации сетевого слоя через coroutines/suspend function. Статья по большей части рассчитана для начинающих.

И есть один нюанс, в статье, в классе ErrorResponse есть неявная зависимость Context (appContext.getString(R.string.unknown_error)) и вот я бы не рекомендовал так делать, лучше такие штуки выносить непосредственно во View (Activity/Fragment).

Читать (En)
👍10👎1
14 задач по Kotlin lists, которые заставят вас подумать

Интересный формат статьи, с задачками на знание операторов у списков. Обязательно попробуйте решить неглядя правильные ответы и имейте ввиду, что некоторые задачки с подвохом 😉

Решать (Ru)
❤‍🔥17👎4👍2🤯2
8 anti-patterns in Android codebase and why I hate them

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

Вот например большинство хаят те же синглтоны, базовые классы и event bus style, но практически в каждом проекте, над которым я работал или видел, всё это использовалось.

Мое мнение такое на этот счет – использовать можно практически всё, но с умом и для решения конкретных задач.

Читать (En)
👍12👎1
Переход на SwiftUI: внедряем TabView взамен UITabBarController

Сказ о том, как переписать навигацию в iOS на TabView, с учетом того, что в приложении есть экраны и на SwiftUI и на UIKit.

Читать (Ru)
👍4
5 Useful Kotlin Extensions for Android Developers

Небольшая заметка довольно простых, но при этом полезных Extensions.

И еще: Extension Functions You Need to Know in Android

Читать (En)
👍10💩8
Stop passing Context into ViewModels

Пару дней назад постил статью про реализацию сетевого слоя через корутины, где говорил про зависимость контекста.

Так вот, сегодня попалась на глаза статья по смежной теме (Context), а именно про передачу контекста во ViewModel. В статье рассказывается почему так лучше не делать и рассматриваюся базовые варианты решения, типа Resource и Locale.

P.S. Не передавайте контекст туда, где он не нужен :)

Читать (En)
👍8🔥7
Customizing AnimatedContent in Jetpack Compose

Несколько примеров плавных переходов в зависимости от стейта через AnimatiedContent (пока что в experimental).

Выглядит неплохо и по коду вроде не особо сложно 👍

Читать (En)
👍10🤮3
Compose End to End тестирование. Основы

В официальной документации сказано, что тестирование UI слоя написанного на Compose, отличаются от тестов привычного View на xml.

Связанно это с тем, что в Compose создаётся отдельное семантическое дерево, которое представляет UI, но не является им. Это дерево также используется для обеспечения доступности интерфейса.

Ловите вводную часть, в которой как раз рассказывается про основы и некоторые особенности написания UI тестов под Compose.

Полезные ссылки

👉 Testing your Compose layout
👉 Исходники из статьи
👉 Testing cheat sheet

Читать (Ru)
👍4🔥2
Setup your CI/CD Pipeline with Fastlane and Github actions for Android apps

Гайд по настройке CI/CD с помощью Fastlane и Github actions.

И еще одна статья от автора, про Fastlane → Fastlane: Automate beta deployments and releases for your android apps

Читать (En)
👍8
Исследование российских команд iOS разработки, 2022

Тут Егор Толстой стартанул шестой ежегодный опрос про российские команды iOS разработки.

Про что там?

👉 Откуда мобильщики получают знания
👉 Какие команды iOS разработки самые сильные
👉 Сколько айосеров решило уехать, а сколько – остается в России
👉 Кто входит в топ-10 айос разработчиков
👉 В каких компаниях iOS разработчики хотят работать больше всего

Будет круто, если пройдете опрос и пошарите своим коллегам/знакомым!
👍8🤮7