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
Обзор решений для навигации в iOS

Еща одна статейка на тему навигации в iOS, в которой сравниваются несколько реализаций, подход к построению навигации от Bado и RouteComposer.

Репозиторий с примерами кода можно посмотреть тут.

Читать (En)
👍11
MVC, MVP, MVI, MVVM and VIPER Design Patterns

Статья про всем известные design patterns (MVC, MVP, MVI, MVVM, VIPER), с объяснением базовых штук типа "архитектура", "для чего нужны паттерны" и т.д. и кратким разбором по каждому.

Читать (En)
👍28
Clean Architecture: Android App

Похоже намечается архитектурная неделя 😁, сбился с счету, ну пусть будет тысячная статья про организацию Clean Architecture.

Пример кода на гитхабе: Clean Architecture

Читать (En)
🔥12👍5👎2
Android Architecture Blueprints v2

Продолжаем тему архитектуры.

👉 Репозиторий с примерами различных архитектур и паттернов под Android.
👉 Тут статейка по миграции Blueprints to Jetpack Compose.
👉 Ну и на всякий случай Guide to app architecture
🔥8👍2
Forwarded from Записки разработчицы (Anna Zharkova)
Подготовила, надеюсь, интересный кейс для SwiftHero. Осталось только залить на гитхаб.
Разобрала до кишок работу с ServerDrivenUI для SwiftUI:

https://www.youtube.com/watch?v=XS6iH8ElD4o

Торопитесь, пока трансляция жива
👍11
Modeling Retrofit Responses With Sealed Classes and Coroutines

Пример того, как можно организовать обработку ответов от API с помощью sealed классов/интерфейсов и корутин. (Retrofit + Sealed classes/interfaces + Coroutines)

Читать (En)
👍20🤮2
How ViewModels survive configuration changes

А вы знаете как в андроиде вьюмодельки переживают изменение конфигурации?

Если нет – вот статейка, в которой на примере Activity разобрали исходники из sdk, все достаточно просто. У Activity есть 2 метода, через которые и происходит вся работа.

👉 onRetainNonConfigurationInstance()
👉 getLastNonConfigurationInstance()

Читать (En)
👍22
SwiftUI vs Jetpack Compose by an Android Engineer

Каким-то чудом забыл запостить интересную статью, в которой сравниваются 2 достаточно актуальных фреймворка Jetpack Compose и SwiftUI. Вот, исправляю ситуацию)

Читать (En)
👍15
Отменяем операции правильно на примере корутин

Еще одна статья про работу с корутинами, в частности про то, как отменять корутины.

Вопрос на засыпку. В статье приводится пример с отменой Thread. Так вот, знаете ли вы как можно остановить/отменить тред?

P.S. как-нибудь выделю время и сделаю подборку по многопоточке.

Читать (Ru)
👍28
Clean Code — A practical approach

Советы с примерами по написанию чистого кода. По сути, все эти советы/рекомендации сводятся к довольно простым штукам (нейминг, короткие функции с минимальным количеством аргументов, комментарии в нужных местах и т.д.). Но как показывает практика, многие пренебрегают и такими, казалось бы базовыми вещами.

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

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

Решил запостить большой и мощный 💪 2-ух недельный дайджест сегодня, т.к. впереди майские праздники, хочется отдохнуть.

Из интересных новостей. Вышла первая бета Android 13, подробности тут. За 2021 Google заблокировала более 1 миллиона приложений, нарушающих политику. Apple снова начала удалять приложения из App Store, которые давно не обновлялись – на решение вопроса с обновлением, разработчикам дают 30 дней, в противном случае будут удалять.

Всех с наступающими праздниками!!! Увидимся на следующей неделе)

Android 🤖

• Clean Architecture: Android App
• Android Architecture Blueprints v2
• Kotlin Tips: Operators and Nullable Values
• Интеграция Huawei Mobile Services (HMS)
• Modeling Retrofit Responses With Sealed Classes and Coroutines
• How ViewModels survive configuration changes
• Отменяем операции правильно на примере корутин
• Keep Rules in the Age of Kotlin
• Нативные автотесты Android: Наш путь
• Slack-Gradle-Plugin
• Gradle for Beginners (Build Types, Product Flavors, Build Variants, Source Sets)
• Kotlin Sequences: Getting Started
• Object equality in Java and Kotlin
• Twitter going all in on Jetpack Compose for feature development: greater productivity, less bugs
• Measure and improve performance with Macrobenchmark
• To Compose, or Not to Compose, That is the Question
• Exploring Google Map Compose Library For Android
• Kotlin Coroutine (High-quality Course)
• Android code style using Spotless and Ktlint
• How to Format All Possible Errors From API Calls in Android With Clean Architecture

iOS
🍏

• Обзор решений для навигации в iOS
• Swift Heroes: The Extra. "ServerDriven SwiftUI. Managing declarative UI"
• Type placeholders in Swift
• The Golden Rules of weak self
• Transitions in SwiftUI
• Exploring SwiftUI Sample Apps
• [boringssl] Failed to log metrics
• SwiftUI Case Study: Data modelling of Brotherhood Alchemist
• Downloading and Caching images in SwiftUI
• The S in SOLID - Swift Edition
• Unit Testing and UI Testing in Swift
• Using new Swift Async Algorithms package to close the gap on Combine
• Building an Accessible Custom Tab Bar
• How to Use Generics in Swift
• Core Image Tutorial: Getting Started
• Use Dependency Injection to Unit Test a ViewModel in Swift
• Localization in iOS App using MapKit and CoreLocation
• Write Cleaner Swift Using MVVM With Property Wrappers
• Простой способ обнаружить retain cycle в UIViewController
• Top 7 Subtle Swift Features

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

• MVC, MVP, MVI, MVVM and VIPER Design Patterns
• SwiftUI vs Jetpack Compose by an Android Engineer
• Clean Code — A practical approach
• Как мы в QIWI внедряли Kotlin Multiplatform Mobile Часть 2: Смотрим шире
• Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
• Better API calls in Flutter
• Kotlin Multiplatform Mobile — sharing the UI State management
• Как работает Backend-Driven UI на мобильном клиенте
• Practical Guide: Flutter + Firebase + FlutterFire CLI + CI (Codemagic)
• Top Flutter & Dart packages in 2022

Previous | Next

Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
🔥8👍2👏2
Dependency Inversion Principle: How Google Developers write code

Простой и понятный пример Dependency Inversion Principle.

DIP соответствует D в SOLID и гласит: Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.

Несколько полезных ссылок про SOLID

👉 The S in SOLID - Swift Edition
👉 SOLID Principles: The Kotlin Way
👉 S.O.L.I.D Principles in Android Development
👉 Тысячная статья про принципы SOLID
👉 SOLID Principles with Swift

Читать (En)
👍11🔥4
Как мы используем фича-флаги в мобильном приложении QIWI Кошелек

Статья про реализацию Feature Flags/Feature Toggle от QIWI.

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

Библиотечка от QIWI тут: FeatureToggle

Читать (Ru)
👍12
Несколько важных Google-новостей

👉 Google запускает бесплатный курс Android Basics with Compose
👉 Опубликовали программу Google I/O
👉 Вышло первое developer preview of Privacy Sandbox on Android

В сообществе поговаривают, что в РФ начали отваливаться сервисы Firebase, а конкретно Firebase App Distribution и Firebase Cloud Message. Более детальной инфы пока нет.

Из соседнего чата: "Firebase is available in most countries and regions. However, Firebase restricts access to some of its business services in certain countries or regions. At this time, distribution of pre-release app versions via Firebase App Distribution is restricted in Russia”.
Google Play запретил разработчикам загружать и обновлять платные приложения в России

С 5 мая загрузка и обновление уже существующих платных приложений в Google Play запрещены в России. Для бесплатных приложений изменений нет.
👍48💩36👎8😱7🤔5🥰3🤬3🤮31🔥1👏1
Дайджест недели

По новостям: Google запускает курс по Compose, опубликовали программу предстоящей Google I/O, вышло первое developer preview of Privacy Sandbox on Android. Теперь по новости про блокировку загружать и обновлять платные приложения в России. В некоторых чатиках пишут, что запретили не разрабам загружать и обновлять, а пользователям скачивать и обновлять. Перечитал еще несколько раз все пункты, формулировки на самом деле странные, что в RU, что в EN версиях. Но есть все таки один пункт, в котором прописано следующее.

Can I publish new apps or update existing apps during this pause?

You can still publish new free apps, and update existing free apps. Updates to paid apps are blocked for compliance reasons. 


Android 🤖

• Dependency Inversion Principle: How Google Developers write code
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Важные Google-новости
• Google Play запретил разработчикам загружать и обновлять платные приложения в России
• Learn Dagger 2 to Hilt for Android Easily in under 10 Minutes
• Jetpack Compose Dropdown
• S.O.L.I.D Principles (Examples in Kotlin)
• Kotlin-inline, crossline, noinline function and reified: Everything you need to know(Android) — Part 1
• 7 things to keep in mind while building jetpack composable’s.
• Architecture MAD Skills series wrap up
• Топ вопросов работодателю от Android-разработчика
• Isolate Koin Within an Android Module
• Kotlin, обрабатываем исключения в корутинах правильно
• The curious case of crashing Workers
• Material Components Android 1.6.0 Released
• Конвергенция в многомодульном приложении
• Passive Views: keep your UI code simple and stupid
• CI-CD: Firebase App Distribution with Fastlane on Android
• Creating reliable tests for Android notifications

iOS
🍏

• I replaced my native iOS app with a cross platform web app and no-one noticed
• Measuring app performance in Swift
• Types of memory in swift
• Improve Performance in Your iOS Applications — Part 1
• Swift 5.7: Unwrapping Optionals Gets an Improvement
• Clarifying criteria & new timing extension for App Store Improvements process
• Тест-ревью: как прошли два года написания unit-тестов
• Is It Possible to Have a Half-modal View in SwiftUI?
• Swift visitor design pattern
• Two Ways to Unit Test Notification Center in Swift
• Send Events from SwiftUI to UIKit and Vice Versa
• AsyncThrowingStream and AsyncStream explained with code examples
• AttributedString’s Codable format and what it has to do with Unicode
• SwiftUI Supporting External Screens
• Flow Navigation With SwiftUI (Revisited)
• Делаем патч для Pods библиотеки
• Как нативно визуализировать голос в iOS
• 6 Tips to improve Coding of Swift
• Building iOS apps faster using Bazel

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

• Destructuring Declarations | Kotlin Tips
• Kotlin 1.7.0-Beta Released
• Flutter for Apple TV
• KSP and Plugins. Optimizing Kotlin Multiplatform common code with Anna Zharkova
• React Native 0.68 и «новая архитектура»
• Как использовать Kotlin Multiplatform ViewModel в SwiftUI и Jetpack Compose
• Does Flutter boost developer productivity?
• Different Approach to Create Mapper using Kotlin Delegated Properties

Previous | Next

Публикация на Habr: Дайджест недели (мобильная разработка)

Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍9🔥2👏1
Android Lint. Подборка

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

Еще есть вот такой репозиторий Awesome Android Lint, в котором собраны различные статьи, анализаторы, плагины, включая Ktlint, Detekt, так же есть правила от Google, Uber, Slack.

👉 Spotless
👉 Awesome Android Lint
👉 Ktlint
👉 Detekt

P.S. Кстати, сделал отдельный канал, куда буду складывать различные библиотеки и инструменты – @mobile_dev_tools
👍12🔥3
Write Beautiful Code With Swift Result Builder

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

Читать (En)
👍3🔥1
Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play

Полезная статья от HH про то, как вынести вендорозависимый код (Google services, HMS) в отдельные модули и разделить сборки для AppGallery и Google Play через Product flavors.

А так же напоминаю, вот тут целая подборка материалов по интеграции HMS.

Читать (Ru)
👍10