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

По всем вопросам @dilix90
Download Telegram
Всякие разные DIY #Android примеры показывают хороший результат по отклику от сообщества.

И сегодня это... #Jetpack #Composer - свеженький декларативный #UI.

Наткнулся на интересный репозиторий. В нем собраны примеры и ссылки на туториалы по composer. https://github.com/Foso/Jetpack-Compose-Playground
Вы знаете, что теги, вида #Android - кликабельны?
По нажатию на него можно отфильтровать весь контент группы.
#GeekBrains проводит онлайн марафон из серии вебинаров на тему эффективного развития и достижения карьерных целей 🚀

Я целиком и полностью согласен с тем, что не так важно что именно ты учишь, как-то как к этому подходишь!

Вебинары обещают ответить на такие неоднозначные вопросы, как «Как начать разрабатывать на зарабатывать на разработке и IT», послушаем 🎙

📌 А еще они проводят конкурс на бесплатное обучение на факультете. https://fas.st/a2VrGW
Работа программистом - это не только постоянное сидение за компом в наушниках, оторванными от внешнего мира 😜

Это и рабочая обстановка, коллеги, инструменты работы в команде и т.д. и т.п.

Если вы хотите посмотреть, как это все устроено в московском офисе Яндексе, то для вас хорошие новости! Он открыл свои двери для технических специалистов, которые хотят посмотреть как все работает изнутри. А посмотреть там есть на что 👍 http://bit.ly/2TXkPzE
#Анимации в #Android всегда уступали #iOS. Последнее время #Google делает все больший упор на плавность и красоту #UI и качественный #UX.

#MotionLayout - как раз один тому пример. Я тут наткнулся на две статьи о том, как можно сделать красивые и сложные анимации в приложении. Один и тот же UI сделали с использованием MotionLayout и без. Все приправлено примерами и исходниками на #Github.

Анимации БЕЗ MotionLayout:
https://proandroiddev.com/complex-ui-animation-on-android-8f7a46f4aec4

Анимации С MotionLayout:
https://proandroiddev.com/complex-ui-animations-on-android-featuring-motionlayout-aa82d83b8660
Если кто еще не видел, то вот...
Анонс Mobius 2020 в Питере 🚀

Из того, что увидел потенциально интересного

👉 DevOps для мобильных приложений. Автоматизация это всегда хорошо
👉 О декларативном UI и разработке Jetpack Compose
👉 То, что потенциально интересно начинающим разработчикам - про карьеру в мобайле

В общем много разных интересных тем, должно быть полезно. http://bit.ly/2vLAXKC
Питерский Mobius пройдет 23-24 июня 2020, а билеты на него можно купить уже сейчас 😉

По промо коду

dimlix2020pc

можно купить билет из тарифа Personal по цене прошлого месяца (т.к. каждый месяц - дороже). На сегодня это 15'500 вместо 17'000, скидка 1'500руб.

Программы конференции на сайте еще нет, но Mobius по опыту серьезно подходит к мероприятию 👍
#Android 11 preview уже доступна для Pixelей.

Что стоит ждать от android 11:

👉 One-time permission
Для ряда разрешений (камера, микрофон, местоположение) пользователь получит возможность выбрать опцию "Можно, но только в этот раз". Для меня, как для пользователя - это круто. Как для разработчика - ну так себе 😜

👉 Автоматически "Больше не спрашивать" про разрешения
Если пользователь 2 раза отказался от определенной запроса на разрешения доступа, то система посчитает что юзер выбрал "и больше не спрашивать.

👉 Нельзя всегда следить за пользователем
Получить постоянное разрешение на доступ к местоположению пользователя не получится, даже если очень хочется и target API на Android 10.

Конечно этот не весь список изменений, но то, что точно стоит учитывать в ваших приложениях уже сейчас. А с полными изменениями можно ознакомиться на офф. сайте.

В целом тренд на безопасность пользовательских личных данных и #ML продолжается, что наверное и хорошо! http://bit.ly/39Xzaku
Сейчас на проекте делаем #Android приложение, (большую) часть которого можно встраивать как #SDK внутрь других приложений. Причем довольно тесно. То есть не просто открыть стороннюю камеру и вернуть результат в виде ссылки на картинку в системе.

В связи с этим есть ряд интересных задач о связке внешнего приложения и SDK. Как то:

👉 Если внешнее приложение имеет #LockScreen по таймауту, а время, проведенное в SDK может оказаться значительным - как сделать seemles experience и white label, чтобы случайно, при возврате, юзер не столкнулся с LockScreen.

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

👉 Простота интеграции. Естественно, ваш SDK мало кто захочет интегрировать, если внедрение будет вызывать боль и страдания.

👉 Мы сами же интегрируем свое SDK. Так сказать "родное" внешнее приложение. И вот тут надо из SDK логировать во внешние системы всякую аналитику, события и тд.

И это еще не все...
Итак, я, на мой взгляд, нашел решения этим задачкам.

Если вам интересно как такое можно провернуть - ставим лайк.
А если и сами знаете ответ - то welcome в комменты для обсуждения!
Уже скоро, а именно 20-22 марта 2020 в Питере пройдет #МегаХакатон от #HackUniversity.
Один из треков - #Android разработка ( а иначе зачем я вам это пишу 😉 )

Можно участвовать как со своей командой, так и найти новую.

На сайте стоит глянуть фотоотчет от 2018 года, выглядит круто!

И официальная информация от организаторов:
🚀Стань частью МЕГАХАКАТОНА 2020🚀
20-22 марта 2020 в Санкт-Петербурге состоится Всероссийский Университетский МегаХакатон HackUniversity 2020 #HU2020!

48 часов работы, мегаактивности, трехразовое питание, актуальные кейсы, современные технологии.

🏆 Призы и инвестиции в проекты, вакансии напрямую от топ-компаний, 60+ университетов-партнеров, возможности от российских и зарубежных инкубаторов.

👨‍💻 Участвуй с командой или найди её на МЕГАХАКАТОНЕ, реши кейс, получи приз или возможность реализовать свой проект.

⚡️ Подробности и регистрация: https://www.hackuniversity.ru/

Торопись! Количество участников ограничено. Возраст участников 18-45 лет.
Давно хотели познакомиться с #Kotlin, но не доходили руки и всё ещё пишете на #Java?

4 марта в 20:00 мск #OTUS (@Otusjava) приглашает на бесплатный пробный #вебинар «Быстрый переход на Kotlin для Android-разработки»

📌 За 1,5 часа вы узнаете:
— почему стоит учить Kotlin, и чем он лучше Java;
— отчего #Android разработчики предпочитают Kotlin;
— познакомитесь с основными возможностями языка;
— напишете простое Android-приложение на Kotlin.

Делиться экспертизой будет преподаватель-практик курса Михаил Борисов (Software Engineer, Android разработчик на Kotlin с большим опытом). Не упустите шанс задать ему все интересующие вопросы!
В связи с коронавирусом многие компании переводят сотрудников на удаленную работу из дома. Лично я "самоизолировался" из офиса еще в 2016ом и работаю таким образом вот уже четвертый год.

Если у кого из вас, вашей компании, друзей и родственников есть вопросы про удаленку, задавайте, отвечу, проконсультирую. Бесплатно.

Лучше задавать прямо в тред, а не в личку, чтобы не повторяться 😉

А между тем продолжаю готовить серию статей про разработку Android библиотек\SDK и тем, с какими проблемами можно столкнуться по дороге.
Google выкатил в бету #CameraX !
Работа с камерой довольно долго был болевой точкой в разработке.

Сначала это было просто #Camera #API, далее# Camera2. На пересечение была поддержка нескольких версий в зависимости от OS 😜

Последнее время Google стандартизирует свои API и выносит прежние реализации за публичные интерфейсы, что в итоге должно сделать жизнь производителей железа проще. И нашу тоже 😉

Из хорошего, что пишут про CameraX

👉 Реализация будет по умолчанию привязана к #lifecycle owner. Это значит, что теперь будет невозможно забыть закрыть стримы (что скажем бывало... )

👉 Упростилась обработка изображений. Оно теперь вынесено в отдельную сущность.

👉 Вынесена отдельная настройка в виде Camera Selector. Как бы не смешно звучало, но раньше, например, открыть фронтальную камеру - вызывало вопросы 😅

Если у вас есть приложения, заточенные на использование камеры - самое время попробовать новый CameraX (если еще нет) и внести свой вклад в его развитие! http://bit.ly/2w9keBI
#GeekBrains в связи с карантином по короновирусу открывает бесплатный доступ к нескольким курсам.

Для этого необходим зарегистрироваться на GeekBrains, заполнить заявку и подождать 1-3 дня. Необходимо сделать до 31 марта. http://bit.ly/3dfFSEK
Новые даты #Mobius 2020 Piter!

Ранее рассказывал про планирующийся Mobius в Питере.

Из-за действующего запрета на проведение массовых мероприятий конфа на данный момент переносится на 22-23 июня 2020 в «Park Inn by Radisson Пулковская».

Билеты
Купленный вами или вашей компанией билет остается действительным на новые даты.
Если новая дата вам подходит, менять билет не нужно, всё будет работать.
Если новая дата вам не подходит — обратитесь в наш саппорт support@mobiusconf.com или @JUGConfSupport_bot. Мы поможем вам с возвратом денег, заменой билета на осеннюю конференцию или заменой участия на онлайн с частичным возвратом.

Программа
Сейчас мы договариваемся со спикерами на новые даты. Не всем спикерам подойдут новые даты, и программа немного изменится. Но мы приложим все усилия, чтобы программа стала интереснее и полезнее.
Одно из новшеств конференции — добавление онлайн-трека: один зал будет специально оборудован для того, чтобы мы могли проводить доклады и дискуссионные зоны с удаленными спикерами. Будем держать вас в курсе.

На случай продления карантина и ограничений
Мы прорабатываем разные форматы участия в конференции (онлайн и смешанные) на случай, если введенные недавно ограничения не позволят нам собраться вместе и летом. Будем оперативно сообщать вам обо всех изменениях в наших каналах и на сайте https://bit.ly/2J57MFL

Промокод действителен до начала конференции: dimlix2020pc

По всем оставшимся вопросам — пишите в саппорт (support@mobiusconf.com или @JUGConfSupport_bot).

Всем здоровья, продуктивной удаленной недели и поменьше паники 😉
В #Яндекс открыт набор на стажировку по мобильным приложениям.

Отличная возможность попробовать свои силы.
А если вы не собирались на стажировку, на страничке можно найти полезные ссылки где можно набраться знаний как по  #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