iOS
• AltStore PAL заработал на iOS в Европе
• Gradiente — простые градиенты
• 4 блога для IOS-разработчиков
• О, вы из Англии? Локализация Ozon Seller на iOS
• Is Dynamic Isolation Bad?
• How to use experimental Swift versions and features in Xcode?
• CountryKit: the framework Apple forgot to build
#ios
AltStore PAL заработал на iOS в Европе
Первый альтернативный магазин приложений для iOS запустился в Европейском союзе.
1. На удивление, это даже не магазин Epic, а AltStore PAL от Райли Тестута.
2. Магазин стоит €1.50 в год для компенсации Core Technology Fee.
3. Пока в нем всего 2 (два) приложения от самого Тестута - Delta, эмулятор, способный воспроизводить игры NES, SNES, Nintendo 64, Game Boy, Game Boy Advance и Nintendo DS, и Clip, менеджер буфера обмена, запрещенный Apple. Сейчас Delta бесплатна, чтобы помочь компенсировать оплату самого магазина, но загрузка Clip требует минимального ежемесячного взноса на Patreon в размере €1 (плюс налог).
4. В целом AltStore PAL интегрируется с Patreon для монетизации и в будущем будет работать для разработчиков, которые хотят распространять версии приложений за счет краудсорсингового финансирования, что не разрешено в App Store. В AltStore PAL приложения будут размещаться разработчиками на собственных серверах, а пользователям придется добавлять дополнительные «источники» в магазин приложений, чтобы загрузить другие программы.
И что: начало так себе - долго, дорого и херово - но это начало. Ждем RuStore других магазинов.
Android
• Android 15 может получить возможность помещать приложения в карантин
• Kotlin Faker — генератор фейковых данных
• Kodein DI для Android. Целостность графа и тесты на DI
• Extending Coil
• andrejkingsley/plotting-financial-data-in-kotlin-with-kandy-66757aef05ef">Plotting Financial Data in Kotlin with Kandy
• Nested LazyColumn in Jetpack Compose
#android
Сложно ли создать мобильное приложение? Какие инструменты и навыки нужны для работы в сфере Android-разработки? На эти и другие вопросы ответим на мини-курсе Skillbox!
Регистрация: https://epic.st/Tj1CGf?erid=2VtzqvFoytB
Мини-курс подходит новичкам. Вам не нужно знать код, чтобы вникнуть в основы и понять принципы разработки мобильных приложений.
Будет 4 интенсивных занятия, на которых вы:
— изучите основы разработки приложений на Android ОС;
— познакомитесь с инструментами для разработки;
— узнаете, как создавать UI — внешний вид приложений на Android;
— напишете собственное приложение музыкального плеера.
Спикер — Анна Жаркова, руководитель группы разработки в компании Usetech. Спикер на конференциях AppsConf, Mobius, TechTrain, DroidCon (2022, 2023), YaTalks. В мобильной разработке с 2013 года.
Всех участников ждут бонусы: чек-листы, гайды, персональная карьерная консультация, сертификат на скидку 10 000 рублей и год бесплатного изучения английского языка.
Определитесь на практике, подходит ли вам сфера мобильной разработки! Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Закончили публикацию про Trio от Airbnb. Это такой фирменный фреймворк для управления экранами/навигацией в Jetpack Compose. Традиционно очень интересно, ни хера непонятно. Он в свою очередь построен на базе Mavericks, библиотеки управления состояниями для Jetpack. Из преимущества - Trio хранит данные в ViewModel, делает навигацию типобезопасной, код чистым и декларативным. Традиционное “НО” - вероятно за пределами Airbnb фреймворк крайне избыточен. Однако если вы хотите посмотреть как работают большие компании - обратите внимание.
Разработка
• Clean Architecture: Complexity over Simplicity?
Маркетинг
• Boost Your App's Rating: A Practical Guide to App Review Prompts
Кроссплатформа
• Опыт внедрения компонентной разработки
• Efficiency Unleashed: The Power of Automation in Our Flutter Adventure
• How to Find Memory Leaks in Flutter Apps?
iOS
• FontBlaster — программная загрузка шрифтов
• Apple объяснила удаление первого эмулятора Game Boy из App Store
• Reflection в iOS: как посмотреть содержимое любой сущности
• Splitting Up a Monolith: From 1 to 25 Swift Packages
• Swift 6 upgrade Preparation
• Fetching OSLog Messages in Swift
• Bar Chart creation using Swift Charts
• Getting started with Benchmark package
• How to quickly get a PrivacyInfo.xcprivacy file for your iOS app
• Defining Custom Errors With Advanced Descriptions In Swift
#ios
Apple объяснила удаление первого эмулятора Game Boy из App Store
Ранее в этом месяце Apple пересмотрела свои правила App Store, впервые разрешив в нем приложения-эмуляторы игр. В субботу было одобрено одно из первых таких приложений: iGBA. Это приложение позволяло пользователям импортировать и воспроизводить ROM, загруженные из Интернета. Однако в воскресенье приложение уже было удалено из App Store без объяснения причин. Сейчас они последовали.
1. Apple заявила, что удалила iGBA из App Store за нарушение двух правил App Store: раздела 5.2 об авторских правах и раздела 4.3 о спаме.
2. iGBA для iPhone и iPad была, по сути, лишь клоном открытого проекта Райли Тестута GBA4iOS с рекламным наполнением.
3. То есть iGBA удалили не из-за того, что оно поддерживало импорт ROM, загруженных из Интернета, а из-за копирования открытого проекта (кого это когда волновало, но ооокееей).
И что: в целом это отличная новость для будущего приложений для эмуляции игр на iPhone и iPad. Это означает, что Apple разрешает эмуляторы игр всех видов, включая те, которые позволяют пользователям импортировать сторонние ROM. В целом такая практика вызывает опасения в связи с пиратством и авторскими правами, но Apple, видимо, не собирается вмешиваться.
Android
• Реализация Критических оповещений на Android
• Pokedex Compose — современная Android-разработка
• Разработка новостного приложения. Часть 5. Подготовка к публикации в Google Play
• Экзоскелет для ExoPlayer
• Вышла первая бета-версия Android 15
• Enhancing Jetpack Compose with Koin
• Focus as a state - new effective Android TV focus management system with Jetpack Compose
• Jetpack Compose Navigation, Ktor, and Koin DI Unlocking MAD Skills
#android
🚀 Участвуй в True Tech Hack от МТС и поборись за общий призовой фонд в 1 500 000 рублей. Регистрируйся.
Приглашаем разработчиков, специалистов по Data Science, менеджеров по продукту, дизайнеров. Соревноваться предстоит в одном из двух треков, чтобы улучшить жизнь людей с особыми потребностями.
🏠 Трек 1. Улучшение клиентского опыта витрины МТС Live для пользователей с особыми потребностями
⭐️ Трек 2. Разработка голосового управления для МТС Финтех на основе искусственного интеллекта для людей с ограниченными возможностями
Как пройдет True Tech Hack:
🔸 26 апреля – открытие хакатона и Q&A-сессия
🔸 27 апреля-12 мая – чек-поинты с экспертами
🔸 12 мая – окончание приема проектов
🔸 14 мая – полуфинал, защита лучших решений и объявление финалистов
🔸 17 мая – финал в Москве
True Tech Hack – твой шанс получить новый опыт, выиграть приз и сделать наш мир доступней и удобней для всех. Регистрируйся на хакатон до 25 апреля по ссылке.
Видео и подкасты за неделю:
• (iOS Ru)
Зачем мне Kotlin в iOS-разработке? Я только Swift выучил!
• (iOS Ru)
Как дизайнить доступность для скринридера
• (iOS En)
CocoaHeadsNL Meetup
• (iOS En)
Creating The DVD Screensaver In SwiftUI
• (iOS En)
Flip Book Effect - SwiftUI
• (iOS En)
Animating Swift Charts
• (And Ru)
Разработка новостного приложения. Часть 5. Подготовка к публикации в Google Play
• (And Ru)
Экзоскелет для ExoPlayer
• (And En)
Does Native Android Development Have a Future?
• (And En)
Sealed Classes for UI State are an ANTI-PATTERN
• (And En)
Building Quality Android Apps for the Future with Continuous Integration
• (Crs Ru)
Как мы сделали ставку на KMP
• (Dev Ru)
Проблемы маленьких приложений при увеличении нагрузки по данным
• (Dev Ru)
Как выжать все соки из Jenkins
• (Dev Ru)
Убиваем Lottie? Тащим Rive?
• (Dev Ru)
Вся правда про удаленку
• (Dev Ru)
Зачем нужен Zig, и чем он отличается от других языков
Посоветуйте в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
Разработка
• Может ли мобильный разработчик стать CTO?
• Don't require people to change 'source code' to configure your programs
Маркетинг
• Vids — новый инструмент для продуктивной работы от Google
Кроссплатформа
• Clean Architecture and state management in Flutter: a simple and effective approach
iOS
• Анимация чисел в SwiftUI с помощью contentTransition
• Почему Accelerate — это не страшно
• Подходы к созданию линейных графиков для iOS-приложений на базе фреймворка SwiftUI
• Jager-yoo/the-best-example-of-leveraging-ios-widget-potential-duolingo-f677115ad3f6">The Best Example of Leveraging iOS Widget Potential: Duolingo
• Deep linking for local notifications in SwiftUI
#ios
Android
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 2
• HomeAssistant на Android
• Как я написал клиент электронного дневника своей области
• How Kotlin Annotations Work — Part 2: Moshi Case Study
• Dependency Injection in Compose
• What's new in Kotlin 2.0.0-RC1
• devpicon/kotlin-sealed-classes-vs-sealed-interface-68681f577b06">Kotlin — Sealed classes vs Sealed interface
#android
Вторая часть "Осваиваем ViewModel в Android: «можно» и «нельзя»"
Рассматриваются два вопроса:
• Избегайте раскрытия мутабельных состояний
• Используйте update{} при использовании MutableStateFlows
Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-2.htmlПоставьте 👍, если хотите третью и последующие части.
Android
• Studio Bot превращается Gemini in Android Studio
• Google запускает новую сеть Find My Device в США и Канаде
• Tap Target Compose — показ новых фич в Compose
• Разворачиваем ML модель с использованием ONNX на Android в километре над землей
• Mastering Android ViewModels: Essential Dos and Don’ts Part 2
• neha-saini/android-architecture-design-interview-questions-answers-ba4170f05561">Android Architecture & Design Interview Questions & Answers
• Enable users to share your app's deep links using navigation-recents-url-sharing
• Publishing Android, Java or Kotlin Libraries with AWS CodeArtifact
• Spotify-Inspired Audio Buffering Slider Animation with Jetpack Compose
#android
С сегодняшнего дня в ЕС на iOS работает загрузка приложений с сайтов. Правда, есть ряд важных условия, вроде дикой Core Technology Fee, которая сейчас находится под рассмотрением ЕС, подтверждение возможности решать споры об интеллектуальной собственности и правительственные запросы на удаление информации, прохождение ревью Apple, обязательства по предоставлению пользователям iOS услуг по обслуживанию и прочее. “Запомните этот пост” (С) - думаю, что количество компаний, которые воспользуются этим в 2024 году, будет оцениваться максимум в несколько десятков.
Разработка
• ВКонтакте запустил бесплатный курс по разработке мини-приложений
• VK открывает набор на оплачиваемую летнюю стажировку
• Смартфон для джаваскриптера-олдфага: стоит ли гику брать дешманские девайсы на KaiOS? Смотрим на Nobby 240 LTE
• There is always something: Fighting distractions as a software developer
• Healthy Documentation
• Building Something Real in your spare time
Маркетинг
• Новое приложение Indaband позволяет создавать музыку вместе с людьми по всему миру
Кроссплатформа
• Разбираем генеративный SDK от Google — google_generative_ai. Часть 1
• Где заканчивается Flutter и начинается платформа?
• Опыт внедрения компонентной разработки
• SaezChristopher/stop-using-flutter-it-will-die-sooner-than-you-think-and-improve-your-product-instead-3750219dd695">Stop using Flutter, it will die, sooner than you think
• I've spent 5+ years working on Uthupia using Flutter. Here are 5 Lessons I've learned
iOS
• Как быстро сделать файл PrivacyInfo.xcprivacy для вашего iOS-приложения
• Apple в ЕС запускает загрузку приложений через веб-сайты
• How to do pagination in SwiftUI
• Common Mistakes to Avoid When Using Enums in Swift
#ios
Как быстро сделать файл PrivacyInfo.xcprivacy для вашего iOS-приложения
Манифест конфиденциальности — это XML-файл, соответствующий формату Apple .plist, который находится в корне пакета вашего приложения для iOS и называется PrivacyInfo.xcprivacy. С 1 мая его наличие ОБЯЗАТЕЛЬНО для всех приложений - без него приложения будут отклоняться.
Существует 3 основных типа данных, которые необходимо указать в декларации конфиденциальности:
• Использует ли ваше приложение данные для «отслеживания», и если да, то на какие домены они отправляются
• Список всех типов собираемых данных с указанием того, почему эти данные собираются и используются ли они для отслеживания.
• Список API, "требующих объяснение", и для чего вы их используете
В Xcode есть интерфейс редактирования, который может сгенерировать необходимый файл PrivacyInfo.xcprivacy. Однако он традиционно неудобен. Разработчик сделал онлайн-генератор PrivacyInfo.xcprivacy, в котором вы просто указываете все необходимые параметры в удобной форме: https://wemakeapps.net/manifest-maker
Подробнее в статье: https://apptractor.ru/info/articles/kak-bystro-sdelat-fayl-privacyinfo-xcprivacy-dlya-vashego-ios-prilozheniya.html
Android
• Введение в Trio: часть 3
• Вопросы с собеседований: жизненный цикл View в Android
• В Android 15 может появиться NFC-зарядка
• RxJava — всё?
• Custom Navigation Drawer component with Jetpack Compose
• Speed Up Your Gradle Builds with the New Gradle Critical Path Analyzer
• a.shariat.b/ktor-for-android-networking-moving-beyond-retrofit-5c91fd627f6a">Ktor for Android Networking: Moving Beyond Retrofit
• Learning about Android runtime
#android
Хотите узнать, как работать с GraphQL и улучшить навыки разработки iOS-приложений?
Приходите на бесплатный практический урок от OTUS. Спикер Анна Жаркова — руководитель группы разработки, опытный преподаватель и ментор.
На вебинаре вы освоите работу с GraphQL, поймете различия между GraphQL и REST API и научитесь создавать сетевой слой для ваших приложений. Занятие подойдет разработчикам на iOS уровня Middle и Senior.
Урок пройдет 6 мая в 20:00 мск и будет приурочен к старту курса «iOS Developer. Professional». После вебинара вы получите специальную цену на обучение и персональную консультацию от наших менеджеров!
Ссылка для регистрации: https://vk.cc/cwcTJKРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Традиционно обозрел топ быстрорастущих по загрузками и деньгам в России приложений. В топе скачиваний 4 приложения Яндекса, а в двадцатке 6 - то ли кампанию запустили, то ли обновления накатили. А топ быстрорастущих в заработке практически весь занят музыкой и аудиокнигами. На первом месте Радио Record. В топе еще три приложения с аудиокнигами (четыре, если считать лекции, подкасты, сказки и колыбельные для детей «Гусьгусь») и музыка МТС. Шесть приложений из десяти!
Разработка
• Проблемы маленьких приложений при увеличении нагрузки по данным
• Как выжать все соки из Jenkins
• Убиваем Lottie? Тащим Rive?
• Вся правда про удаленку
• Зачем нужен Zig, и чем он отличается от других языков
• PumpkinOS — открытая реализация PalmOS
• How to write a code formatter
• Power of Blameless Culture in Software Engineering
Маркетинг
• Топ быстрорастущих приложений в России в апреле
• Airchat — социальная сеть, построенная вокруг голоса
• Базовый анализ продуктовых фичей
Кроссплатформа
• Как мы сделали ставку на KMP
• Proactively Securing React Native Applications: Best Practices and Strategies
• Flutter Consent Messages with Google Admob
iOS
• Поваренная книга SwiftUI: изображения и иконки — Часть 1
• Зачем мне Kotlin в iOS-разработке? Я только Swift выучил!
• Как дизайнить доступность для скринридера
• Apple готовится выпустить Mac на M4
• Creating Shapes from SVG in a SwiftUI app
• alessandromanilii/custom-toggle-styling-in-swiftui-703f68684fa3">Custom Toggle Styling in SwiftUI
#ios
Можно ли распознать CTO на микрокомпьютере
Подборка всех материалов за прошлую неделю - нестрашный Accelerate и MVVM без M, жизнь после отвала eMMC и инъекции зависимостей в Compose, история успеха Flutter, проблемы маленьких приложений, 900 самых популярных инструментов ИИ на базе open source и многое другое. Подключайтесь!
Вышла первая бета-версия Android 15
Первая публичная бета-версия Android 15 доступна для загрузки уже сейчас, если у вас есть телефон Pixel. Это первый релиз для потребителей после двух предварительных версий для разработчиков.
Google акцентирует внимание на следующем:
• Приложения по умолчанию будут масштабироваться от края до края (Edge-to-edge) и рисоваться за полупрозрачными системными полосами в верхней и нижней частях экрана, а не вокруг них.
• Улучшена работа с NFC - приложения теперь могут регистрировать отпечаток пальца на поддерживаемых устройствах, чтобы получать уведомления об активности цикла опроса, что обеспечивает бесперебойную работу с несколькими приложениями, поддерживающими NFC.
• На уровне ОС реализована поддержка архивации и разархивации приложений, так что сторонние магазины приложений смогут воспользоваться этой функцией.
• В Android 15 появился новый класс ProfilingManager, который позволяет собирать информацию о профилировании внутри вашего приложения.
• В Android 15 также будет улучшена поддержка дисплеев Брайля.
• E2eeContactKeysManager в Android 15 облегчает сквозное шифрование (E2EE) в ваших Android-приложениях, предоставляя API на уровне ОС для хранения криптографических открытых ключей.
• Безопасный запуск фоновой Активити - в Android 15 появились дополнительные изменения, направленные на то, чтобы вредоносные фоновые приложения не могли выводить другие приложения на передний план, повышать их привилегии и злоупотреблять взаимодействием с пользователями, чтобы защитить пользователей от вредоносных приложений и дать им больше контроля над своими устройствами.
Стабильный релиз ожидается в июне, а выпуск новой ОС ближе к сентябрю.
Android
• Инъекция зависимостей в Compose
• EinkBro — маленький быстрый браузер для Eink
• Жизнь после отвала eMMC. Часть 2: даём новую жизнь устройствам с полностью мёртвой памятью. Загружаем Android с MicroSD
• Modern Android App Template with Jetpack Compose
• Foundational Tools in Android
• surendar1006/implementing-critical-alerts-on-android-aa49b4d75705">Implementing Critical Alerts on Android
• riztech.dev/mastering-solid-principles-in-android-app-development-for-maintainable-code-f2632e6423b9">Mastering SOLID Principles in Android App Development for Maintainable Code
• phamvietbinh2013/implement-pinch-to-zoom-for-your-image-grids-by-jetpack-compose-part-1-8700685a3e9d">Implement Pinch-to-Zoom for your Image Grids by Jetpack Compose
#android
Очередное доказательство, что никакая архитектура не догма, а лишь “свой правил” - статья “Убираем M из MVVM в SwiftUI”. Автор, разработчик Ice Cubes, открытого SwiftUI-клиента для Mastodon, прекрасно обходится без M-слоев, храня все в представлениях. При этом его код чистый, функциональный, тестируемый, поддерживаемый и все вот это. Так что если вам в следующий раз будут рассказывать про строго следование архитектуре, ссылайтесь на лучшие практики - отсутствие архитектуры лучше, чем плохая.
Разработка
• Исследователи Apple разработали LLM, которая понимает интерфейс приложений
• Google представил собственный процессор Axion для ИИ
• Bottom Tab Bar Navigation Design Best Practices
Маркетинг
• Вышел 2024 App Marketing Trends Report
• Navigating SKAdNetwork: Build Your Game’s Conversion Schema in 4 Easy Steps
Кроссплатформа
• React Native App performance is a myth?
iOS
• Убираем M из MVVM в SwiftUI
• OpenSwiftUI — открытая реализация SwiftUI
• jpmtech/passing-one-swiftui-view-as-a-parameter-to-another-swiftui-view-b01a3cde8166">Passing One SwiftUI View as a Parameter to Another SwiftUI View
• Display empty states with ContentUnavailableView in SwiftUI
• Level Up Your Career by Adding UI Tests to Your SwiftUI App
• Flip Book Effect - SwiftUI
• rxjz._93/why-stateobject-needs-to-be-marked-as-private-in-swiftui-fcb70113b868">Why StateObject’s need to be marked as private in SwiftUI?
• paramitha/i-made-an-old-style-keyboard-in-swift-865d1e83eadf">I made an old-style keyboard in Swift
#ios
Если вы устали от гибких методологий, то вот вам новая идея - разработка на основе заголовков. Заголовок (Headline) — это очень короткое предложение, которое содержит только самый важный бит, а все остальные биты отсеиваются. Раскладываем проект на поток заголовков, выбираем агрессивную дату поставки первого и работаем как проклятые, чтобы уложиться в эту дату. Игнорируем все остальное. Не работаем ни над чем, что не поможет сделать этот заголовок. Как только заголовок будет отправлен, переключаемся на следующий в потоке и повторяем. Вот и все, можете увольнять своего Agile-консультанта.
Разработка
• Разработка на основе заголовков
• Huawei продвигает собственную ОС и планирует дистанцироваться от Android, Windows и других операционных систем
• Are You Doing Product Management or Bullshit Management?
• Chronon, Airbnb’s ML Feature Platform, Is Now Open Source
Маркетинг
• Приложение для наблюдения за затмением вышло в чарты App Store и Google Play
• Statistical significance and its importance with app experiments
Кроссплатформа
• Flutter: история успеха
• Shorebird 1.0 – Update your Flutter apps instantly
• The journey of writing a new package
iOS
• Поваренная книга SwiftUI: создание текстовых полей в SwiftUI
• Продление подписки Apple Developer from Russia в апреле 2024 без иностранной карты и сэкономить пару тройку тысяч рублей
• Trigger value pattern in SwiftUI
• Removing the M from MVVM with SwiftUI
• Number Text Animation in SwiftUI with contentTransition
• jakir/apply-pinch-to-zoom-in-any-view-in-swiftui-ios-29b9fd31a3e1">Apply pinch to zoom to any view in SwiftUI
#ios