Последние изменения в политиках и правилах Google Play вызвали самые оживленные дискуссии среди разработчиков, в том числе среди русскоговорящих разработчиков. Так как нам важно мнение разработчиков, мы решили провести в эту пятницу специальный вебинар для всех русскоговорящих разработчиков на тему Policy от команды Google Play. Присоединяйся к предстоящему вебинару от Google Play чтобы узнать больше о свежих новостях и самых часто возникающих у разработчиков проблемах. После вебинара будет возможность задать вопросы, не пропусти шанс встретить экспертов онлайн!
Прямой эфир: как обуздать iOS-разработку в больших командах
Всем привет! Меня зовут Женя Суворов, я руководитель команды мобильной архитектуры в Авито. 4 апреля на нашем ютуб-канале и в социальных сетях мы проведем прямой эфир и обсудим, как в iOS-разработке удержать качество продукта на высоком уровне даже при сильном масштабировании проекта и команды.
Поговорим на разные темы: как понять, что твой проект вырос, и нужно менять подходы к разработке, какие сложности возникают, как правильно организовать командную работу, коснемся архитектуры и кодовой базы, сравним метрики разработки в маленьких и крупных проектах, а дальше — библиотеки, фреймворки, языки — глубже и интереснее. Сами не знаем, куда заведёт разговор. В дискуссии будут участвовать эксперты из Яндекса, Сбербанка, HeadHunter, OK.RU и Авито.
Под катом — примерные темы, которые планируем обсуждать (и предлагаем вам дополнить этот список), а также пароли и явки для тех, кто захочет присоединиться к трансляции. Добавляйте пост в закладки: после встречи обновим его и выложим видео.
Dependency Injection in Flutter
We’re currently experimenting with Flutter while developing our side project for step challenges with colleagues. This side project should also be considered as a playground, where we can check if we can use Flutter in more serious projects. That’s why we want to use some approaches there that can look like an over-engineering for such a small project.
So one of the first questions was what can we use for dependency injection. A quick search in the internet revealed 2 libraries with positive reviews: get_it and kiwi. As get_it
turned out to be a Service Locator (and I’m not a fan of this pattern), I was going to play with kiwi, which looked more promising, but then I’ve found another one library: inject.dart. It is heavily inspired by Dagger library, and as we use the latest one in our other Android projects, I’ve decided to dig into it.
Kaspersky Mobile Talks #1. Многомодульность
В конце февраля мы запустили новый формат встреч Android-разработчиков Kaspersky Mobile Talks. Основное отличие от обычных митапов — здесь вместо сотни слушателей и красивых презентаций на несколько различных тем собрались «бывалые» разработчики, чтобы обсудить всего лишь одну тему: как они реализуют многомодульность в своих приложениях, с какими проблемами сталкиваются, и как их решают.
Authenticate me. If you can…
I frequently hear questions like "How to implement authentication in an Android app?", "Where to store a PIN?", "Hey man, will I be secure if I implement an authentication feature in such a way?" and a lot of the kind. I got really tired answering these questions so I decided to write all my thoughts about it once to share with all questioners.
Redux — подобные контейнеры состояния в SwiftUI. Основы
На этой неделе мы поговорим о создании контейнера состояний схожим с тем, который используется в Redux. Он является единственным источником значений для разрабатываемого приложения. Единое состояние для всего приложения облегчает отладку и проверку. Единый источник истинностных значений устраняет тысячи ошибок, возникающих при создании нескольких состояний в приложении.
How to Implement Tinder Swipe Cards in SwiftUI
In this article, I would like to show you how to achieve a Tinder-like card view and behavior (swipe to action), with just a few lines of code.
To achieve this, we need to do the following things, in order:
- Create UserView
- Create NavigationView
- Create BottomBarView
- Create SwipeView
- Put all this together inside ContentView
So let's get started.
Разработка мобильного приложения без сервера
Такая ситуация может происходить по разным причинам. Однако, чаще всего на старте разработки, бэкэнд просто не написан и клиент начинает без него. В таком случае начало разработки затягивается на 2-4 месяца.
Иногда сервер просто отключился (упал), иногда не успевает выкатывать нужные методы, иногда есть проблемы с данными и т.п. Все эти проблемы привели нас к написанию небольшого сервиса Mocker, который позволяет подменить реальный бэкэнд.
От веба до приложения за один DeepLink
Android-приложения являются отражением сайта или сервиса и зачастую представляют собой сходный функционал в удобной оболочке. Из-за этого становится насущным вопрос навигации между страничкой в вебе и установленным клиентом. Для решения этой проблемы были изобретены диплинки (deeplink). Под катом вас ждёт увлекательная история о том, как мы внедряли их у себя и обрабатывали случай, когда у пользователя ещё не было установлено наше приложение.
Flutter: рисуем текст вдоль окружности
Понадобилось мне тут на днях в одном мини-проекте (проект, можно сказать, экспериментальный, сделан на Flutter Web) реализовать такого вида штуку:
Создание инкрементального сервера для iOS Team
Бесплатная книга
После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
Против всех: in-app голосовые помощники
Вы пользуетесь каждый день голосовыми помощниками? Я — нет. Хотя разрабатываю их уже более 7-ми лет!Такими словами открывалась девелоперская сессия нашей конференции по разговорным технологиям в Москве.
А что, собственно, не так со всеми этими «Алисами», «Марусями» и «Google Ассистентами»? Почему пользователям с ними неудобно, а бизнесу — непонятно? И какая этому всему есть open source альтернатива?
Почему я отказался от кросс-платформенных решений в мобильной разработке
Позвольте мне с вами кое-чем поделиться. Мне нравится идея кросс-платформенной разработки. Возможность использовать один набор инструментов для всех моих задач — это мечта. Кто не хотел бы использовать только один инструмент, чтобы успешно выполнять свои задачи? Пиши один раз, запускай везде? Я хочу!
Находим потерянные файлы в нескольких Xcode таргетах
Привет, я Саня — iOS-разработчик в Surf, и в этой статье поделюсь своим способом решения головной боли, которая возникает при работе на проекте с несколькими таргетами.
Here's an Update on Flutter 1.9 Release Coupled With Dart 2.5 Programming
Recently during the Google Developer Days Conference in China that was held on September 10, 2019, Flutter 1.9 was released along with the updated Dart 2.5 programming language.h
The major highlights from the conference can be summed into three major points:
- Google has announced Dart 2.5 programming update and a new Flutter 1.9 Version upgrade.
- Dart 2.5 will support calling C code and intelligent code completion.
- Flutter 1.9 will support iOS 13, macOS Catalina, and new Material widgets.
In this blog, I am going to discuss the major pointers in detail for you to understand the highlights and updates in detail!
Let’s begin!
What’s in store for Dart 2.5 as a programming language?
Dart is a Google borne programming language that has been used to develop mobile, web and desktop based applications. It is an object-oriented, class defined, garbage collected language with a C-style syntax, which is used to optionally compile into JavaScript.
The latest version of Dart 2.5 comes with these major highlights:
-> Support for Calling C Code straight through Dart using Dart FFI Library:
Developers who have knowledge about low-level programming languages will be excited from this announcement. The event also saw the launch of dart:ffi library, the preview of which allows calling into C code directly from Dart and Flutter.
Быстрое ознакомление с SwiftUI
Для начала давайте создадим проект с поддержкой SwiftUI. Минимально необходимые для этого требования системы — это macOS Catalina и Xcode 11. Создайте новый проект “File > New > Project…”, выберите “Single View App” и убедитесь, что выбрано “User Interface: SwiftUI”.
Проект будет выглядеть примерно так:
Как могли заметить, теперь можно видеть все изменения сразу же на Preview. Например, попробуйте изменить текст на “Привет, Хабр!”. Круто да?
How to cook reactive programming. Part 1: Unidirectional architectures introduction
Recently I wrote an article What is Reactive Programming? iOS Edition where in a simple way I described how to build your own Reactive Framework, and helped you to understand that no-one should be scared by the reactive approach. The previous article could now be named How to cook reactive programming. Part 0., since this is a continuation. I would recommend reading the previous article if you are not familiar with the reactive programming concepts.
Организация Flavors во Flutter
Для чего нужны Flavors
Представьте ситуацию: есть приложение с аналитикой. Есть команда разработки, тестировщики и конечные пользователи. И те, и те пользуются одной версией приложения. Допустим мы хотим проанализировать насколько пользователям интересна фича А. Что в этом случае мы делаем? Идём в аналитику и смотрим сколько было использований данной фичи (например, переходов на экран).
Но что же мы видим: запредельное число переходов, которое ну никак невозможно с текущей аудиторией, причём все эти переходы были в какой-то определенный отрезок времени. Мы идём дальше и понимаем, что в это время проводились тесты данной фичи. А чуть ранее её разработка. При этом аналитика также отсылалась. Итог: аналитика получается грязной и некачественной.
Здесь можно заменить слово аналитика на любое другое: пуш-нотификации, креш-репортинг и т.д.
И в этой ситуации нас спасает разделение приложения на две версии отличающиеся минимально, например Bundle ID(package-name). Разработчики и тестеры используют только специальную dev версию, а пользователи продовую.
Больше кейсов команды Surf >>
Это как раз и есть одна из задач flavor’ов. Здесь будет использоваться именно flavor, так как именно это название используется Flutter'ом. Люди, которые знакомы с Android-разработкой, думаю сразу узнали этот механизм.
Масштабируемая архитектура для больших мобильных приложений
В этой статье мы не будем разбирать MVP, MVVM, MVI или что-то подобное. Сегодня мы поговорим о более глобальной вещи, чем просто архитектура уровня представления. Как спроектировать действительно большое приложение, в котором смогут комфортно работать десятки или сотни разработчиков? То приложение, которое легко расширять независимо от того, как много кода мы уже написали.
7 Best Fitness Apps For Android Users
But for those who want to start putting themselves in order, we conducted an examination of mobile applications for sports and identified the best among them. According to the results of the study of mobile fitness applications, a rating has been compiled that you can (and should!) Use when choosing a pocket assistant for training.
We present you 7 fitness apps for Android, which received the highest overall score after checking for 100+ parameters.