DroDev | Мобильная разработка: мысли вслух
460 subscribers
104 photos
229 links
Обсуждаю и рассказываю как сделать жизнь разработчика в команде интересной, легкой и продуктивной.

По всем вопросам @dilix90
Download Telegram
В #Яндекс открыт набор на стажировку по мобильным приложениям.

Отличная возможность попробовать свои силы.
А если вы не собирались на стажировку, на страничке можно найти полезные ссылки где можно набраться знаний как по  #Android, так и по #iOS разработке. https://bit.ly/39ySyDI
#GitHub теперь еще дешевле. Они немного изменили тарифные планы:

- Бесплатный план теперь включает неограниченное число коллабораторов, 2'000 Github Action minutes/month и Community Support
- Абонентская плата за Pro план тепер 4$/мес вместо 7$/мес
- Абонентская плата Team тарифа теперь 4$/мес вместо 9$/мес
Monthly pricing for our paid Team plan has been reduced from $9/user to $4/user.
- Неизменно Github остается бесплатным для открытых репозиториев.

А вы пользуетесь платными тарифными планами Github?
И снова пару слов про кросплатформенную разработку и #Flutter.

Ожидание:
- Написал код один раз, работает везде
- Нажал кнопочку, проект собрался под все платформы

Реальность:
- #Firebase авторизацию заставил работать только с бубном. На форумах писали про "магическую" комбинацию правильных версий библиотек самого Flutter и #firebase_auth.
- #Push уведомления, необходимые также для авторизации (silent push) на iOS получилось настроить только с N-ого раза, удаляя туда-обратно сертификаты в #appstoreConnect
- Библиотека #url_launcher не хотела запускать email клиент на iOS с русскими символами в интенте 😳
- Для того, чтобы собрать проект под #iOS необходим #xCode

Итого:
Разработка под 2 платформы - удобно для #MVP, когда нужно относительно быстро запустить проект под 2 платформы, но это не так просто как может показаться на первый взгляд.

Бонус:
Само приложение можно найти по ссылке: https://stroycash.page.link/appDynLink

Буду рад обсудить детали реализации, ответить на вопросы и услышать ваши отзывы!
Недавно понадобилось в очередной раз сверстать View, которое бы растягивалось в зависимости от размера контента, НО не больше чем размер экрана.

Помню, раньше это было сделать не тривиально, а сейчас наткнулся, что это уже поддерживается из коробки в #ConstraintLayout начиная с версии 1.1 🔥

android:layout_width="wrap_content"
app:layout_constrainedWidth="true"

constrainedWidth отвечает за то, что View принимает во внимание также размеры внешнего контейнера.
Нужно меньше проводов!

В #Android 11 улучшили беспроводной дебаг приложений. Теперь для первоначального подключения не будет требоваться провод.

Все что нужно будет для настройки, это:

1. Обновить SDK на вашем компе
2. На устройстве включить режим разработчика
3. Разрешить беспроводную отладку
4. С помощью кода сопряжения связаться с устройством
5. На компьютере перейти в android_sdk/platform-tools.
6. Выполнить команду adb pair ipaddr:port. Порт и адрес использовать из диалогового окна, полученном на шаге 4.
7. (Для Linux и Windows) выполнить команду Run adb connect ipaddr:port
...
Профит! https://bit.ly/2ypcDQr
#Mobius Piter 2020 по понятным причинам переезжает в онлайн.
Даты 22-25 Июня.

Было 2 дня, стало 4. Зависать в онлайне перед компом на протяжении долго времени тяжело, по-этому растянули конференцию на 4 дня.

Цена стала в 2 раза ниже, а именно 12 т.р. за участие.

Что неизменно - так это концентрация сильных докладов про мобильную разработку! https://bit.ly/3dmNBAq
Проект LifeViewer ищет разработчика для создания #Android версии приложения с нуля.

#iOS версия LifeViewer app:
https://apps.apple.com/ru/app/lifeviewer-productive-day/id1482922018 📲

Зарплатная вилка: 100'000 - 200'000 руб. на руки + опцион 💰

Как всегда требуется оперативно решать поставленные задачи и писать чистый, качественный код.

По всем вопросам 📝
- в телеграм (@Victor_Khodalov)
- на почту: victor@friendstech.co.uk

#Вакансия имхо интересная.
4,8 из 5 в #AppStore много стоит.
Наличие iOS версии - говорит о том, что ТЗ уже прям совсем готово 🚀
Последнее время пользуюсь #Android Studio из stable ветки и давно не заглядывал в canary... а зря....

В Android Studio 4+ завезли несколько интересных фич:

👉 Навигация по #Dagger коду.
Интересная фича, позволяет переходить непосредственно к Provided методам например, т.е. упрощает дебаг не самых очевидных связей.

👉 Как всегда заявлено улучшение скорости сборки и возможностей hot reload.

👉 Build Speed Window
Показывает слабые места вашей сборки. Удобно, особенно если у вас есть кастомные шаги сборки внутри.

👉 Live #Layout Inspector
Сам Inspector - очень полезная вещь, когда надо проверить верстку на реальном устройстве. Но раньше было необходимо получить snapshot, который можно исследовать. Теперь же можно смотреть верстку в режиме реального времени.

Это, по крайне мере для меня, выглядят прямо удобно. Но также внутри есть еще ряд интересны изменений, такие как Database Inspector, Native Memory Profiler, Эмулятор внутри студии и другие. Полный список как всегда доступен на офф. сайте.

А какой версией студии вы сами обычно пользуетесь? Stable или Canary? https://bit.ly/3c0bb4H
Android Studio из какой ветки вы обычно используете?
Anonymous Poll
86%
Stable
14%
Canary
Новая интересная #вакансия по #Android

Вилка ЗП: 1 300 - 2 000 $ на руки
Удаленная работа, полная занятость.

Неплохое комбо для РФ.

Нужен Android Developer на #Kotlin, чтобы разработать новое приложение для 1.2 миллиарда жителей Африки.

Обязанности, требования и что ждут от кандидата в целом как и у всех вакансий.

О компании:
Mojo - это команда разработчиков на рынке финтех услуг. Создают продукты для российских и международных компаний. Команда полного цикла, быстрые процессы, каждому небезразлично то, что мы делаем.

https://mojo.finance/

Все вопросы и отклики на вакансию присылать в Телеграм @iznak
Разработчику важно постоянно развиваться и быть в курсе последних технологий.
Это позволяет эффективнее решать задачи, расти по карьере и быть востребованным специалистом.

На канале @android_school_ru каждую неделю автор публикует собственные практические мини-курсы на 1-2 часа, помогающие освоить фишки #Android.
Все курсы бесплатные и разделены по категориям. Вы всегда можете найти новый для вас материал, хотя бы потому что знать всё и всегда - не получится 😉

Каждый мини-курс нацелен на отработку конкретного навыка, например работа с #Room, #AlarmManager или #RxJava.
Результат каждого курса - рабочее приложение 📲

Из последнего:

👉 Чем отличается Dependency injection от Service Locator ?
👉 Тестируем миграции версий базы данных в Room
👉 Разработка приложения Фитнес-календарь на базе AlarmManager

Автор канала Михаил.
Он имеет большой опыт разработки и ранее работал в Rambler, Alibaba Group, а сейчас разрабатывает приложение с аудиторией 10+ млн. пользователей.
А еще автор является преподавателем онлайн-курсов в Нетологии и Отус.

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

Это все здорово и наверное правильно, но что точно стоит помнить (по моему опыту), делая свои проекты:


👉 Идея ничего не стоит. Вообще. Без реализации и команды. Все идеи "витают в воздухе", можно нагенерить 100500 мыслей о том что сейчас якобы нет и если сделать то будет пушка.

👉 Встречал популярную мысль "Сейчас вот я запущу свой мега-супер проект, все начнут про него говорить, скачивать и будет бомба". Не будет. Компании вкладывают уйму денег в маркетинг, исследования, аналитику и улучшения продукта. Сам по себе проект конечно может поехать, но таких случаев единицы на миллионы.

👉 Вы должны быть вашим же первым пользователем. Особенно в "пет" проекте. Делать приложения для веганов, когда вы едите мясо даже на десерт - так себе история.

👉 Лучше зарелизить проект раньше, но с багами, чем поздно, но идеальный. Логика, к сожалению проста. Кажущийся на первый взгляд нереально крутой проект может быть никому не нужен. Об этом лучше узнать как можно раньше.


Подведем итог на позитивной ноте. Заниматься личными проектами, учавствовать в opensource разработках и тд - хороший способ прокачать навыки и попробовать что-то новое. Но ожидания завышать не стоит, чтобы потом не разочароваться. https://bit.ly/3ei97H9
#Google вплотную взялся за задачу «сделать жизнь #Android разработчиков проще».

Пару недель назад выкатили видео, в котором рассказали что нового и реально интересного есть в #Jetpack - наборе инструментов для андроид разработчика.

Из самого для меня интересного:

👉 #Hilt. Рекомендованная библиотека для Dependency Injection. Она построена на #Dagger, но реализует то, что обычно приходилось делать костылями. Теперь есть простой и понятный способ инжекстится в Android Framework и Jetpack library классы.
👉 Paging 3. Переписанная Paging 2 на корутинах. Вообще, попробовав раз корутины и поняв их идеологию, возвращаться к RX для простой многопоточность уже не захочется.
👉 Navigation с Dynamic feature. Сам навигационный компонент всё никак не доходят руки нормально попробовать, но выглядит интересно. Теоретически можно строить навигацию, предполагая что все экраны в наличии, а по факту динамически подгружать фичи по мере использования. Модулярность в действии.
👉 Упрощение Request #Permission. Наконец. Теперь в понятном виде, легко и непринужденно можно запрашивать Runtime Permissions. Раньше использовал RxPermissions, которые делали жизнь проще, но сейчас вообще шик.
👉 Autofill IME. Клавиатура вообще всегда была больным местом. Кстати, в андроиде, начиная с 11 с помощью WindowInsets появилась возможность (наконец!) синхронизировать контент приложения с клавиатурой. А тут еще подвезли интересный API, который позволяет отображать inline suggest в подсказках к клавиатуре.

В общем, кажется жизнь андроид разработчика налаживается 😉 https://bit.ly/3drdezJ
Недавно с коллегой обсуждали отличия юнит и функциональных тестов.
Как результат - появилась статья, в которой зафиксировал основные мысли и примеры.

Основные мысли:

👉 Юнит тесты помогают писать качественный код, быстро работают и создаются. Тем не менее они не гарантируют что вся система работает так как задумано. Такие тесты говорят где проблема конкретно в вашем коде.

👉 Функциональные тесты могут работать сравнительно долго и быть сложными по своей структуре. Главная их цель – убедиться, что код делает то, что было изначально задумано. Такие тесты говорят где проблема в реализации и логике.

А вы пишите тесты к вашему коду 🙈? https://bit.ly/3ghOIm8
Пишите ли вы тесты при разработке?
Anonymous Poll
38%
Да
62%
Нет
И #Kotlin #Coroutines и Architecture component - практически must have в сегодняшнем Android приложении.

Недавно наткнулся на серию статей как элегантно соединить их вместе, чтобы потом не было мучительно больно.

👉 Часть 1: https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-i-reactive-uis-b20f676d25d7
👉 Часть 2: https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-ii-launching-coroutines-with-architecture-components-337909f37ae7
👉 Часть 3: https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-iii-livedata-and-coroutines-patterns-592485a4a85a

Как-то раньше я совсем не использовал Котлиновские #Flow, пора это исправить. Хороший повод выпилить RX из текущего проекта на корню 🙈
ДомКлик - проект при поддержке Сбербанка в сфере недвижимости ищет Android разработчика.

Почему я это читаю 🙈?
Месячная посещаемость 9.5млн по Similarweb, 4.6🌟 в маркете намекает, что у команды, стоящей за проектом есть о чем поучиться. Это именно продуктовая технологическая компания.

А еще у них есть блог на Хабре.
https://habr.com/ru/company/domclick/

Город: Москва, м.Кутузовская
Формат: офис, гибкий график
Занятость: полная
ЗП: от 150.000 до 300.000

Обазанности как обычно. Разработка приложений, поддержка, code review и вот это всё.

Требования тоже стандартные. Опыт от 1.5 лет. Понимание что такое Android 📱

Плюшки:

•  ДМС со стоматологией, льготная ипотека для сотрудников
•  Пин-понг, плойка, массажные кресла, кикер, библиотека, кофемашины на этажах, бесплатный спорт зал и подземный паркинг.
•  Отличный корпоративный университет, программы обучения в т.ч. за рубежом, конференции, митапы.
•  Все железо, необходимое для работы.
•  Гибкое начало рабочего дня и возможность работать удаленно.

https://team.domclick.ru/

Писать в телегу 24/7 @vamelan
Частенько в чате и группе спрашивают "у меня приложения падает, что делать"... Причем именно в таком формате и без пояснения что крешится, где. Про StackTrace говорить не приходится.

Этот факт побудил написать мини статью о том, что такое логирование, как использовать #logcat и вообще как помочь себе писать качественные Android приложения без боли и страданий. https://bit.ly/2Cxfc52
Техническая #конференция для команд мобильной разработки #Mobius 2020 уже 11–14 ноября, Online.

4 дня, несколько треков, более 30 технических докладов без воды о работе платформ (#iOS/#Android) и языков программирования (#Java/#Kotlin/#Swift) под капотом, инфраструктуре, трендах в мобильной разработке, спикеры с мировыми именами, воркшопы и Q&A-сессии.

Подробная программа появится на сайте конференции, там же можно приобрести билеты: https://bit.ly/30W66XK

Кроме билетов на Mobius действует единый билет на все осенние конференции JUG Ru Group: https://bit.ly/3hOrB3x
#Firebase от #Google, о котором ранее писал в том числе в блоге содержит прямо пул полезных инструментов для мобильного разработчика. От хостинга до аналитики с искусственным интеллектом и ML Kit. Сейчас хотел бы поговорить отдельно про Database функционал.

Fierbase Databse - по сути NoSql база в облаке. Довольно быстро настраивается, описываются правила доступа и можно работать. Все в целом неплохо… пока речь идет только о хранении данных одного пользователя. Так сказать такой облачный кэш для вашего приложения.

У нас начались с ним проблемы, когда захотели написать бэкофис под БД. Т.е. такую небольшую субдоминанта поверх, чтобы было удобно вести сервис. Так как это NoSql база, то в целом она плохо рассчитана на сильно связанные данные и таблицы, чтобы сделать простые отчеты через несколько таблиц пришлось повозиться. Но на этом самое веселое только началось.

Бесплатный режим Firebase включает 50 тысяч доступов на чтение. Вроде много. Я даже выставил «бюджет» в 5$ на всякий случай, чтобы заметить если вдруг что. Все заработало (не так быстро, как могло бы быть с SQL, но все же). А через неделю внезапно оказалось, что наши скрипты для бэра выжирали примерно 11 миллионов чтений в день 😄, что стоило примерно 100-200$ за эту неделю.

Опты с Firebase DB показал (я могу быть не прав, поправьте, если так), что
* Eдобно использовать, когда вам нужен простой бак, хранящий инфу одного пользователя
* Это может стоить дорого, а ограничить жестко возможности нет (только придет уведомление)
* Если вам нужен более продвинутый бэк, то, вероятно писать его поверх Firebase DB так себе идея. Лучше взять даже старый добрый MySQL и иметь контролируемое решение.

А что вы думаете про Firebase Datastore? (Именно про datastore, а не другие сервисы, о которых можно поговорить отдельно). https://bit.ly/31zSJgn