В новом дайджесте — локализация и гиперкубы, библиотеки и декларативные фреймворки, приложения, чтобы побороть зависимость от приложений, Flutter, Unity, подписки, AI для поиска уязвимостей в коде и многое другое.



В этой статье я расскажу, как мы выстроили процесс локализации, как подходим к контролю качества, как релизим переводы в зависимости от платформы, и главное — как мы добились того, что разработчики хорошо отзываются о нашей системе переводов. Невозможно полноценно тестировать и отлаживать мобильные приложения без тестовых устройств. Таких устройств должно быть много, потому что один и тот же код на разных моделях ведёт себя по-разному. Но как организовать учёт устройств? Как сделать так, чтобы разработчики и тестировщики быстро и без волокиты получали конкретный смартфон в необходимой конфигурации?

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в Telegram-канале.

iOS

(+17) Swift Property Wrappers
(+13) 20 библиотек для эффектного iOS-приложения
(+9) Бардак на старте: постмортем на скорость запуска iOS-приложения
(+6) Проблемы архитектуры в больших проектах
(+4) Валидация данных в iOS приложениях
(+4) Swift: Контейнеры для хранения значений по ключу
(+3) Вариант работы с вебсокетами в iOS на языке Swift
Apple ограничивает использование HTML5
СтрижПИ, или SwiftUI на практике
Как в два счёта профукать подписку на Apple Membership (и быстро её вернуть)
Десять заповедей iOS-разработки
Можете ли вы ответить на этот простой вопрос о Swift правильно?
Лучшие iOS-приложения с Interaction-Driven дизайном
Машинное обучение на устройстве с помощью SwiftUI и PyTorch Mobile
SwiftUI: создание листаемых карточек в стиле Tinder
Лучший способ убедиться, что ваш Swift-код больше никогда не сбойнет
Что нового в Watch OS 6?
Асинхронное программирование в Swift с Future и Promise
Показ HTML-кода с картинкой в UILabel и определение нажатия на нее
Swift: подсказки по распространенным задачам
SwiftUI — использование Xcode 11 Canvas
Распознавание речи и синтез речи на iOS со Swift
Реализация контекстных меню в iOS 13 с использованием SwiftUI или UIKit
VVVVVV для iOS и tvOS

Android

(+14) Инкрементальный annotation proccesing для ускорения gradle-сборок
(+12) Починить, хакнуть, раскопать. Решаем онлайн-квест Droid Mission
(+6) Практичные способы маппинга данных в Kotlin
(+4) Внешняя компонента для 1С Мобильной платформы (BroadcastReceiver)
Google I/O 2020 пройдет 12-14 мая
Microsoft выпустила SDK для смартфона с двумя экранами Surface Duo
Google выпустил новые приложения, чтобы побороть зависимость от смартфонов
Android Developer Roadmap 2019: карта навыков и модель развития Android-разработчика
Welltory удалили из Google Play
Руководство по Jetpack Compose
Троян Shopper скачивает приложения и оставляет отзывы в Google Play
Изменение типов в Kotlin с typealias
Динамическое изменение темы с помощью круговой анимации на Android
KotlinConf 2019: что нового в Java 19: Конец Kotlin?
Компонент JetPack Navigation в Android
Нулевая стоимость абстракции в Kotlin
Как использовать табы в Jetpack Compose?
Лучшие горячие клавиши Android Studio
SharedPreferences в Android
Квест Google I/O 2020
KotlinMultiPlatform: кроссплатформенная погода на Kotlin
RateBottomSheet: предложение оценить приложение

Разработка

(+32) Простой зомби-шутер на Unity
(+27) Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали
(+27) Flutter. Часть 3. Для разработчиков React Native
(+23) Движок, скриптовый язык и визуальная новелла — за 45 часов
(+18) Особенности реализации динамических списков в пользовательских интерфейсах
(+16) Основы левел-дизайна: эффект течения или как не дать заскучать игроку
(+13) Любовь в ненависть indie gamedev'a
(+10) Книга “Разработка мобильных приложений на C# для iOS и Android”
(+10) Как я делал 2D тени в Unity
(+7) Моя первая html5 игра, от Алисы Яндекса и победах в премии до мобильных приложений
(+7) Оптимизация 3D-моделей для игровой сцены
(+6) Мобильная разработка — это просто и скучно? Доклад Яндекса
(+6) Пишем шейдеры кодом в Unity LWRP
(+4) Визуальный редактор логики для Unity3d. Часть 2
(+2) Разработка UI: кого слушать — себя или пользователя?
Podlodka #147: Web-фреймворки
Подождите, операция выполняется. Как главный факап в истории «Сбербанка Онлайн» изменил компанию
Минэкономики предлагает создать российский аналог GitHub
Основы иерархии в дизайне интерфейса
Геймификация: что и почему это работает, часть первая
Чему (почти) 2 года Flutter научили меня
8 трендов UI-дизайна на 2020 год
21 способ быть плохим разработчиком
7 способов быть хорошим разработчиком
Как измерить свои навыки UX-дизайна?
Nebula — открытый глоабльный сетевой стек от Slack
9 советов, как быстро улучшить дизайн приложения
5 принципов дизайна для лучших продуктов
Видео Mobiconf 2019
LaunchDarkly: управление фичами

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

(+4) Вступление в работу с возвратом пользователя: советы для Hooked-модели
(+3) Отчет App Annie за 2019 год: взгляд в прошлое, заметки на будущее
Подписки в приложениях в США выросли в 2019 на 21% до $4.6 млрд
Игры Niantic принесли $249 млн. туристического дохода
Стикеры Venmo
ФАС определила список приложений для предустановки
Реклама в приложении: чеклист
Вышла книга о локализации и культурализации игр
Расходы на мобильную рекламу в России вырастут на 22.2%
Snyk получил новые инвестиции и стал единорогом
AppsFlyer получил новые инвестиции в $210 млн.
Ты водишь! AR-игры в сториз — главный тренд 2019 года
«Додо Пицца» купила «Где Шаверма»
Гонка Slack, Microsoft Teams и Workplace: одна интрига умерла, новая зародилась
1000 установок игры за 2 дня с помощью TikTok
Лучше понимаем игроков с помощью аффинити обучения
Как бороться с мошенническим шпионским ПО на Facebook?
Проблемы ASO для мобильных игр в 2020 году

AI, Устройства, IoT

(+39) SVM. Объяснение с нуля, имплементация и подробный разбор
(+28) Хватит всё подряд называть ИИ
GitHub начал использовать AI для рекомендации задач
Uber собрал один из самых впечатляющих стеков глубокого обучения с открытым исходным кодом

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