Темы



Мобильная разработка за неделю #558 (30 сентября — 6 октября)

В новом дайджесте ускорение запуска приложений и спойлер-эффект кна Swift, сборщик метрик Android-проекта и рисование звезд, замена Firebase, идеальный встраиваемый язык, приложение для заметок, которое не стремится сделать вас более продуктивным и многое другое. Подключайтесь!

urcfnoxehiezsrksw7liaa01riu.png

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Почему ваша задача выполняется в главном потоке?
• Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument
• Быстрый доступ к VPN в iOS с помощью App Intents
• Как реализовать спойлер-эффект как в Telegram на Swift?
• Как в Duolingo удалили 10,000 строк кода с помощью Reaper
• Предотвращаем порчу кодовой базы в iOS-проектах с помощью прекоммит хуков
• Как мы запекали 3D-пиццу
• Есть ли ORM круче SwiftData
• Макросы спустя полгода: не все так гладко
• DriverKit: гоняем данные по проводу без мам, пап и MFi
• HomePod с дисплеем, homeOS и Apple Intelligence выйдет на рынок в следующем году
• 377ae0333d0f4b7b97307c9eea5ee21a.gifServer side Live Activities guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGetting Started with Hummingbird
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Animations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing the #expect macro for Swift Testing
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing PreviewModifier for Quick Xcode Previews
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Configurable Widget to Let Our User Choose!
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering container views in SwiftUI. Sections.
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBlending colors dynamically with the mix modifier
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Actors and Concurrency — Best Practices
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing Shared With You in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow XcodeGen reduced the TDD in Swift codebase by 58,000+ lines
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Use Accessibility Inspector for iOS Apps
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCoreML in Action: From Concept to Code
• 377ae0333d0f4b7b97307c9eea5ee21a.gifS.O. L.I.D. in Swift
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRecreate Apple«s Stopwatch: Mastering Millisecond Precision in SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngВидео SwiftCraft 2024
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAlternative App Icons in Xcode 16
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNew in Xcode16: the macro @Previewable
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI — Support Prior iOS Versions — Backward Compatibility
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngEmbedded Swift and 16×16 LED Matrix Animation Overview
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPreview Updates in Xcode 16
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAuto Scrolling Infinite Carousel — iOS 18
• 96716bcb926741e79bb1c284a88083ca.pngLinksKit — удобное представление SwiftUI для отображения общих ссылок
• 96716bcb926741e79bb1c284a88083ca.pngSymSpellSwift — коррекция орфографии и нечеткий поиск
• 96716bcb926741e79bb1c284a88083ca.pngSwiftUI Flow Layout — потоковый макет на SwiftUI

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Как устроен сборщик метрик Android-проекта
• Рисуя звезды: рисование с помощью Compose и Canvas
• Koin: как сделать свой DI за 10 минут
• Шлём биткоины с Android (и смотрим транзакции)
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Создание уведомлений на языке Kotlin
• Gemini Nano теперь доступен на Android в экспериментальном режиме
• Что такое Hilt
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImageVector vs painterResources — Under the hood
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy fullMode hates Gson so much?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimized Image Loading for Compose and Kotlin Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDemystifying the Android Build Process: A Deep Dive into APK Generation
• 377ae0333d0f4b7b97307c9eea5ee21a.gifQuick introduction to Large Language Models for Android developers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Ripple Outside of Compose Material
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOur journey with compose animations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA Beginner«s Guide to Building Android from AOSP
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring the Declarative Nature of Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStartup Profiles: The Quick Fix for Painfully Slow App Startups
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose Tutorials and Playground
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing kotlin-inject in a Kotlin/Compose Multiplatform project
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to bring your AI Model to Android devices
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA quick glance at AppWidget
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWeather App For Android Wear OS Using Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to «Safely» Migrate from Retrofit to Ktor
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngIntegrating the Gemini API in Android
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Navigate From ViewModels With a Custom Navigator
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroid Application with Microsoft Identity Platform
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApplying the Factory Method and Abstract Factory Patterns in Kotlin
• 96716bcb926741e79bb1c284a88083ca.pngYourSpace — семейный локатор и общение

malx8hbgozt6lee8rmxmg96_s6a.pngКроссплатформа

• Как Dart VM выполняет твой код?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifInspektify: KMP network inspection library
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHotwire Native
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA Simple way to organize your code in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAutomate Your Flutter Environment Setup: One Script to Configure It All
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRealistic folder opening animation in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gif2D Game in Flutter using Flame
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMultiplayer drawing with Flutter and Serverpod. Full tutorial.
• 96716bcb926741e79bb1c284a88083ca.pngTexty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• Чем можно заменить Firebase — Обсуждение на Reddit
• 10 SDK, чтобы улучшить ваше мобильное приложение
• 3 совета для улучшения читабельности кода
• Разработчики получают мало пользы (если вообще что-то получают) от ИИ-помощников
• Aspect Build получил $3.85M на улучшение работы с Bazel
• Самые высокооплачиваемые вакансии сентября в сфере разработки приложений
• Уволить нельзя терпеть
• Lua — идеальный встраиваемый язык
• ⅔ российских компаний используют ИТ-шеринг
• 377ae0333d0f4b7b97307c9eea5ee21a.gifShadow Calls and Circuit Breakers: Uber«s Safe Approach to Mobile Network API Migration
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIt«s hard to write code for computers, but it«s even harder to write code for humans
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDon«t Be Afraid to Re-Invent the Wheel
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEvolving GitHub Issue
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA Local-First Case Study
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy do programmers need private offices with doors?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Manual Pain to Automation Chaos: Finding the Right Balance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGiving depth to your App Icons
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe reality of the developer job market with ex-Googler YK Sugi

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2024
• Новый запрос на обмен контактами в iOS 18 стал угрозой для новых социальных приложений
• Epic подала в суд на Samsung и Google
• Napkin — приложение для заметок, которое не стремится сделать вас более продуктивным
• Новое приложение Wordy поможет вам учить язык во время просмотра фильмов и шоу
• Проектируем А/Б-эксперименты грамотно

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• Когда в автомобиле нет системы GNSS…
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Как в Купере масштабировали машинное обучение и что из этого получилось
• Ищем потерявшихся питомцев с помощью нейросетей
• OpenAI запускает «Холст» для программирования с ChatGPT
• Poolside, занимающийся ИИ-программированием, привлек $500 млн
• Nvidia открыла новую ИИ-модель, готовую соперничать с GPT-4
• Ello обучает детей чтению и с помощью ИИ позволяет детям создавать свои собственные истории

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

© Habrahabr.ru