Виртуализация и изолированные среды для проектов
Это может быть не применимо во всех случаях, но несмотря на это, я думаю,
стоит упомянуть и обсудить это здесь. Честно говоря, я использую виртуализацию
софта уже больше 10 лет. Если я правильно помню, у меня тогда были ранние
версии VMware Workstation и это было чисто ради эксперимента иметь несколько копий Windows на
одном компьютере. Но было абсолютно волшебно иметь возможность работать на Windows 2000 и тестировать ПО
на Windows 98 или Windows NT 4.0 без необходимости
иметь ещё одну физическую машину. На самом деле ПО для виртуальной машины – это
одна из первых программ, которые я устанавливаю на новую машину.
Более того, как только вы начинаете работать над несколькими проектами для
разных клиентов, виртуализация всегда позволяет иметь чистую среду разработки.
Вы помните старые времена DLL ада? Да? Ну, а я нет!
Когда я брался за новый проект, я либо просил ответственного менеджера
предоставить мне виртуальную машину, либо, если это было невозможно, создавал
мастер-образ, который я размещал на файловом сервере компании для всех моих
коллег. Цель виртуальной среды в том, чтобы избегать непредсказуемого поведения
ваших условий разработки. Более того, я могу разработать и создать виртуальный
образ, в точности совпадающий с целевыми машинами клиентов. Позже я уже использовал
VMware
Converter, чтобы
преобразовать один из компьютеров клиента в виртуальную машину. Таким образом я
мог разрабатывать, выполнять и тестировать ПО в более «реальных» условиях.
А по сравнению с моими коллегами у меня не было никаких проблем в установке
патчей, обновлений и новых версий ПО, которые использовались в процессе
разработки определённого проекта. Если это случалось и не приводило к улучшению
результатов, возврат к предыдущему образу – и вуаля! – я снова в строю без
каких-либо серьёзных задержек. Также это позволяет любому разработчику
устанавливать и тестировать новые версии своих IDE или
дополнительных пакетов ПО. В то время главной проблемой были несовместимости различных
элементов ActiveX или версий Microsoft Office.
В случае, если вам нужно обеспечивать поддержку старых операционных систем
для ваших клиентов, нет проблем. Поставьте старого пердуна на виртуальную
машину и наслаждайтесь последней ОС, которая есть у вас на вашем прекрасном
новом железе.
Виртуализируйте вашу рабочую среду, чтобы облегчить себе жизнь
Нужно протестировать ваш последний веб-проект на различных браузерах или
другой операционной системе, либо в старых версиях определённого браузера? Используйте
виртуальную машину, и будет вам счастье!
Не забывайте, что это также показывает ваш опыт и знания вашим клиентам.
Если программа работает на вашей машине, это вовсе не значит, что она будет
работать на любой машине. Поэтому будьте готовы тестировать ПО так тщательно,
как только сможете. У меня недавно была ситуация, что у одного из клиентов был
веб-сайт разработанный и реализованный другим веб-разработчиком. Конечно, всё отображалось
и работало, как надо, до тех пор, пока я не начал свои обычные
кросс-платформенные и кросс-браузерные тесты, чтобы проверить мои изменения в
коде. Вы не можете себе представить отличия в отображении сайта в различных
браузерах на Mac OS X, Linux, Android или
устройстве на iOS. «К сожалению»,
это буквально открыло глаза клиенту и потребовало дополнительной работы от
веб-дизайнера по доделке сайта.
Как всё это изучают
Кто-то изучает сам. Есть много книг, мануалов, видеоуроков, форумов, лучшие из которых, вроде введения в Android, как раз на английском языке.
Однако новичку одинаково легко потеряться в учебных материалах и выбрать неудачный порядок знакомства с ними. Поэтому самостоятельное освоение Android-разработки съедает уйму времени, которое лишним не бывает. Вдобавок — страдает от недостатка практики.
Ценители более системного подхода предпочитают онлайн-курсы (например, на edx.org, Coursera.org, Udacity.org). Но и здесь те же проблемы: выбрать подходящий непросто, качество материала и его полнота очень разнятся, гарантий и обратной связи нет, курсов на русском совсем мало. Да и с бесплатностью всё не так однозначно — эти платформы постепенно превращаются в коммерческие, отступая от первоначальной идеи.
Конечно, есть и исключения — образцы доступного качества вроде легендарного MIT. Но к сожалению, у него нет курса для Android-разработчиков.
Такой курс есть у Skillbox. Стартовать с опытными наставниками и постоянной обратной связью гораздо выгоднее. Наши студенты изучают всё на практике, общаются с менторами, создают полноценный проект для портфолио и быстро входят в профессию.
Эргономичный стол и рабочая среда
Эта глава затрагивает правильный выбор кресла, но расширяет эту тему. Я хочу
высказать своё мнение относительно рабочего стола, некоторых аксессуаров и
ограничений по поводу окружающих вас вещей
Вы должны уделить некоторое внимание
своему рабочему столу, в первую очередь высоте поверхности, которая должна
точно совпадать с положением ваших рук, особенно кистей. В случае, если у вас
нет доступа к столу с настраиваемой высотой, вы удивитесь, какие чудеса могут
створить пара деревянных брусков
Кстати, о высоте, в прошлом году я видел пару альтернатив консервативному
сидячему положению. Лично я был более всего впечатлён концепцией стоячего стола
и стола-беговой дорожки. Первый вполне может быть использован с некоторыми
доработками, тогда как второй может не очень понравиться окружающим. Хотя, если
вы работаете дома или в отдельном кабинете, тогда да, почему бы не сбросить
пару калорий, обдумывая требования к ПО или работая над особо трудными строками
кода или юнит-тестами.
Далее, позаботьтесь о том, чтобы потратить немного больше денег на
клавиатуру, мышь, тачпад или трекбол, которыми вы пользуетесь весь день. Основываясь
на личном опыте, я могу сказать, что к этому нужно отнестись крайне серьёзно. В
начале моей карьеры программиста я всегда удивлялся, откуда у меня появляется
напряжённость в шее и плече. Наконец я пронял, что это было вызвано движениями руки
с мышью! И как только я заменил мышь на трекбол, все эти проблемы исчезли.
Бывали сообщения о серьёзных, хронических травмах от любой работы, связанной с
печатанием. Не гробьте своё здоровье из-за того, что вы (или ваш работодатель)
сэкономили лишнюю тысячу на клавиатуре. Это совершенно того не стоит. Проблема здесь
в том, что симптомы не заметны по началу, но медленно начинают давать о себе
знать через несколько месяцев или лет работы за компьютером. Прислушайтесь к
своему телу и измените ваше оборудование в случае проблем. Просто попробуйте и
увидите, как это меняет дело.
Также позаботьтесь, что ваше окружение спокойное и тихое. Приложите максимум
усилий к комфорту вашего рабочего места. Если есть проблема, обязательно решите
её. Не игнорируйте её и не откладывайте. Повторюсь, если вы недовольны вашим рабочим
пространством, ваша мотивация начнёт снижаться. Побалуйте себя профессиональной
рабочей обстановкой, а также не бойтесь поговорить с вашим менеджером. Просто
опишите вашу проблему и докажите, что обстоятельства могут иметь негативное
влияние на вашу возможность сфокусироваться, сконцентрироваться на задаче и
выдавать желаемые результаты. Быстрое и дешёвое решение, чтобы «отключить» себя
от окружающего мира – надеть наушники или беруши. Это не только заблокирует
отвлекающие звуки, но также даст вашим коллегам простой, но эффективный посыл:
«Не беспокоить». Я могу вам сказать на основе личного опыта, что это работает
невероятно эффективно. Раньше я орал (иногда даже матом) на своих коллег, когда
они подходили к моему столу и заводили разговор ни о чём. Ребята, прошу прощенья
за это, но мы нашли решение. После того, как я обсудил это с моим боссом, мы
пришли к простому решению, что, если возникает какой-то вопрос или проблема,
которую нужно обсудить, мы уведомляем об этом коллег в мессенджере. Это заработало
прекрасно с первого дня, и сразу было положительно воспринято всеми коллегами.
Следующий параграф может относиться только к жаркому климату, такому как на
острове Маврикий, но всё-таки… Комфортная температура!
Я не могу вспомнить, сколько раз я входил в морозилку вместо офиса разработчиков ПО. Это просто безумие, как в некоторых компаниях устанавливают температуру кондиционера. Главное правило – температура внутри офиса в летнюю погоду не должна отличаться от наружной больше, чем на 5 градусов. Всё, что выходит за рамки, нездорово и ведёт к простуде. Вы можете представить себе работников, сидящих за компьютерами в рубашках с длинным рукавом или даже в свитерах в то время, как все остальные на улице изнывают от жары? Нет? Тогда вам стоит приехать на Маврикий… Но вот что нужно для разработчика на самом деле, так это…
Чем занимается Android-разработчик
Создаёт приложения и поддерживает их работу, — в частности:
разрабатывает интерфейс, логику и внутреннюю структуру приложений;
организует удобную навигацию между экранами;
продумывает, как будет вести себя приложение, если поступил звонок или SMS;
пишет код;
оптимизирует приложение: чем меньше ресурсов оно потребляет при работе, тем дольше гаджет проживёт без подзарядки;
обеспечивает безопасность: устраняет уязвимости и защищает данные пользователя
Это особо важно для банковских и финансовых программ;
тестирует приложение на разных этапах разработки;
создаёт внутреннюю документацию и мануал для пользователей;
загружает готовый продукт в Google Play;
изучает пожелания пользователей и готовит обновления.. Эти обязанности обычно распределяются между членами команды
Например, за интерфейс и логику часто отвечают дизайнеры, но бывает и так, что всем занимается один программист
Эти обязанности обычно распределяются между членами команды. Например, за интерфейс и логику часто отвечают дизайнеры, но бывает и так, что всем занимается один программист.
Новые функции и возможности
Помимо обновлённого дизайна, Android 12 получил целый ворох новых функций, которые будут интересны конечному пользователю. Практически все они выводят комфорт в управлении операционной системой на новый уровень:
- Reduce Bright Colors. Функция приглушения ярких цветов располагается в шторке с уведомлениями. Это позволяет не открывать настройки для изменения яркости, если нет желания использовать автоматическую регулировку.
- Redirect vibration. Опция предназначена для тех, кто использует геймпады в играх на смартфонах. Суть её заключается в том, что на джойстик подаётся вибрация – этакая обратная связь. Уже сейчас поддерживаются последние геймпады для Xbox Series и PlayStation 5.
- One Hand Mode. Режим управления одной рукой. Некоторые намёки на присутствие такого режима имелись и в предыдущих версиях Android, но тогда они касались исключительно клавиатуры. Теперь же данный режим можно применить ко всей системе.
- PIP. Доработанный режим «картинка-в-картинке». Ранее тоже можно было поместить видео в картинку и просматривать другой ролик. Но функциональности, позволяющей управлять картинкой, не было. Теперь же пользователь может растянуть картинку, убрать звук и сделать многое другое.
- Улучшенный автоповорот экрана. Раньше для поворота дисплея нужно было повернуть сам смартфон. При этом наблюдались проблемы смены ориентации видео на вертикальную. Android 12 будет следить за положением головы пользователя в пространстве и подстраивать экран в соответствии с полученными данными..
- Длинные скриншоты. Наконец-таки возможность создания скриншотов с прокруткой добралась до стокового Android. А вот MIUI умеет делать длинный скриншот уже давно. Принцип работы такой же: сделать скриншот и тапнуть по кнопке «Создать скриншот с прокруткой».
- Двойной тап по задней крышке. В бету эту опцию не включили, отменив в последний момент. Однако в полноценном релизе она должна появиться. Суть её заключается в том, что можно назначить какое-либо действие системы и запустить его путём двойного тапа по задней крышке смартфона. Весьма интересное решение.
- Специальный режим для стримеров. В ОС присутствует специальный режим для тех, кто профессионально занимается мобильным геймингом. Теперь есть возможность стримить своим достижения. Однако пока поддерживается только площадка YouTube LIVE.
- Режим Screen Time–out. Все смарт-функции отключаются, чтобы вы могли сосредоточиться на какой-то задаче. Это продолжение темы «Цифровое благополучие».
- Опция Extra Dim. Пользователь может установить яркость экрана значительно ниже той, которую технически поддерживает дисплей. Во второй сборке Developer Preview она называлась «Уменьшение насыщенности цветов».
- Обновлённый игровой режим. Теперь у игрушек будет ещё больше возможностей для использования смартфона на полную. Но интерес также вызывают новые инструменты, позволяющие ОС отслеживать уровень заряда беспроводного контроллера. Если он опустится до критического уровня, появится сообщение о необходимости перехода на сенсорное управление.
Это те функции, которые есть в свежей Андроид 12 на данный момент и те, которые появятся в обозримом будущем. Google оставляет за собой право добавлять или удалять функции этапе бета-теста, поэтому не удивляйтесь, если функция из первой предварительной версии для разработчиков пропала в следующих выпусках.
Продвинутый акселерометр
В Android 12, по информации 9to5Google, появится более продвинутый программный акселерометр, способный лучше определять положение смартфона в пространстве и менять ориентацию изображения с портретной на ландшафтную и наоборот. В нынешних реализациях Android эта функция не всегда срабатывает корректно.
Улучшенный акселерометр пригодится в первую очередь владельцам планшетов
научит Android 12 отслеживать положение лица пользователя и на основе этой информации выбирать правильную ориентацию интерфейса. Использоваться для этого будет фронтальная камера, так что эту функцию определенно не оценят те, кто не хочет, чтобы устройство лишний раз следило за ним. Впрочем, 9to5Google утверждает, что собранная фронтальной камерой информация не передается на серверы Google – обработка снимков осуществляется на самом смартфоне.
Виджеты
В Android 12 значительно переработали API виджетов рабочего стола
Мне кажется, что появление этого функционала в iOS 14 подстегнуло Google обратить внимание на жалобы разработчиков на это API еще с самой первой версии Android. Что теперь появилось:
-
Закруглённые края у фона всех виджетов на Android 12+
-
Виджеты могут использовать динамические цвета из темы, которые являются нововведением Material You
-
Начальная настройка виджета может быть необязательной и этот этап может пропускаться
-
Добавлена поддержка CheckBox, Switch и RadioButton. Обрадоваться могу разные Todo списки и приложения, где есть настройки через тумблеры
На превью виджета теперь можно ставить не только статическую картинку, но и верстать UI в XML и добавлять описание
-
Анимации при открытии приложения по клику на виджет. Фон виджета будет трансформироваться в фон окна открываемой Activity
-
Упрощение API для работы со списками в виджетах
-
Большое руководство по обратной совместимости для виджетов до Android 12 и после
Помимо прочего нам обещают библиотеку для написания виджетов в DSL стиле подобно Compose, с поддержкой старых версий Android. Это будет специальное DSL, которое конвертируется в иерархию View, но уже приятно что Compose стиль будет идти и в существующий функционал системы.
Установка Android 12
Помимо смартфона с разблокированным загрузчиком и минимум 10 ГБ свободного пространства, вам понадобится DATA-кабель и компьютер с установленным Google Chrome.
Установку Android 12 я буду делать на MacBook Air с установленной на него macOS 11.2.1 Big Sur, поэтому, вероятно, и компьютеры с Linux также подойдут.
Вам нужно открыть сайт Android Flash Tool в Google Chrome:
Нас интересует кнопка Get Started. Подключите ваш Google Pixel к компьютеру и нажимайте на эту самую кнопку.
Сверху у вас появится диалоговое окно про ADB-ключи. Нажимайте OK:
Несмотря на то, что смартфон вы подключили, его всё ещё не видит браузер:
Поэтому нажимайте на Add new device и выберете в следующем диалоговом окне ваш «Пиксель» и нажмите кнопку «Подключение»:
Тут уже стоит обратить внимание на смартфон: на этой или следующей стадии он попросит у вас разрешение о доверии к компьютеру, на котором вы совершаете всё это безрассудство. Ставьте галочку и разрешайте:
Затем уже непосредственно в интерфейсе Android Flash Tool вам нужно будет выбрать своё устройство:
После выбора у вас появится информация о прошивке:
В этом окне вам нужно нажать Confirm. Тут вас предупреждают, что взаимодействовать со смартфоном ни в коем случае нельзя, поскольку им будет управлять Android Flash Tool. Также нельзя отключать смартфон от компьютера:
Далее вас попросят прочитать правила использования софта и согласиться с ними. Нажимайте I Accept:
В один из этих моментов телефон перегрузится в режим Fastboot. Это нормально, никуда не нажимайте:
И вот, наконец, процесс запущен:
В один из моментов этого прогресса телефон ещё раз перезагрузится. Тут тоже ничего не трогайте:
Спустя пару десятков минут браузер отрапортует о том, что ваш Google Pixel успешно обновлён:
А на телефоне выскочит следующее сообщение, сделать скриншот которого у вас никак не выйдет:
На этом моменте я обнаружил несколько интересных моментов:
- Мой Pixel оставил все данные на смартфоне. При этом наш главред Саша обновлял свой Pixel 3 XL тем же самым методом, однако данные снеслись;
- В разделе «О системе» указано, что смартфон обновлён до Android S:
Также в разделе обновления смартфона по «воздуху» указано, что стоит актуальная Android 11:
Я проверил по номеру сборки, это действительно Android 12, так что паниковать не стоит. Видимо, это особенности беты для разработчиков, которую не пытаются сильно шлифовать перед выпуском.
Карьерный рост и перспективы профессии
В Android-разработке, как и везде в IT, новичок начинает с позиции Junior, затем прокачивает скиллы и становится Middle. Через несколько лет может претендовать на позицию Senior, а наиболее успешные дорастают до тимлидов.
С 2016 года в СМИ ходили слухи, что Google скоро заменит Android новой операционной системой Fuchsia — и Android-разработчики останутся не у дел. Всё прояснилось в 2019 году на конференции Google I/O: руководитель направления Android Хироши Локхаймер заверил, что компания не собирается отказываться от Android для смартфонов. Fuchsia будут применять в умных домах, носимой электронике и устройствах дополненной реальности.
Что нового в интерфейсе
В целом, я не заметил заимствования дизайна iOS. Логическое развитие того, что было у Android и раньше.
Интерфейс, как мне кажется, создаёт 90% впечатлений от устройства, и здесь впервые за много лет Google переделала практически всё. На смену Material Design, который между прочим был в двух версиях, пришёл Material You.
Привычные элементы стали больше, и это можно заметить сразу по циферблату на экране блокировки, который теперь занимает где-то треть площади дисплея и находится посередине, если нет уведомлений. А если они есть, то часики уходят в верхний левый угол, в котором всегда находится дата и погода.
Точно так же часы отображаются в режиме Always On. Кому как, но я это нововведение оценил. Одним словом — удобно.
Панель управления теперь представлена закруглёнными прямоугольниками. Рядом со значками находятся описания функций. В целом, и круглых значков вполне хватало, но именно такой внешний вид лучше всего вписывается в общую логику интерфейса.
Ползунок регулировки громкости тоже стал больше, а по своей форме теперь напоминает таковой в iOS 14. Но в остальном с ней Android 12 имеет мало чего общего.
Жду, когда у всех приложений будут такие виджеты.
Может быть за исключением виджетов, которые Google показала, но в системе они ещё недоступны.
Ещё углы всех виджетов теперь закругляются, иногда это выглядит странно, потому что большинство из них ещё не оптимизированы, но в будущем я представляю, как всё будет круто.
Преемственность на лицо.
Чувствуется влияние Samsung. На Google I/O было объявлено о сотрудничестве с южнокорейской компанией в разработке новой версии Android Wear для умных часов.
Но даже в Android 12 для смартфонов прослеживаются лавры One UI. Приложение настроек тому пример. В будущем ещё больше стандартных приложений получат похожий интерфейс.
Не могу сказать, что это плохо, потому что увеличенные элементы и их смещение к нижней части экрана идёт на пользу, ведь благодаря этому управлять устройством стало заметно легче.
Режим управления одной рукой – это то, чего мне не хватало
Полоска внизу экрана, с которой осуществляется вся навигация по интерфейсу, приобрела функцию смещения интерфейса для комфортного управления одной рукой. Привет, iPhone!
Хвалёный автоматический подбор цвета элементов в зависимости от установленных обоев пока не работает. Штука наверняка должна «завестись» в грядущих бета-версиях. Лично я её очень жду.
Маленькая, но важная деталь: по зажатию клавиши включения в настройках можно задать запуск Google Ассистента вместо бесконтактной оплаты. Правда, для того, чтобы оплатить, придется каждый раз запускать приложение Google Pay, что не всегда удобно. Надеюсь, с будущими релизами это поправят.
Миграция на новую compileSdkVersion
1. Задержка показа уведомлений от Foreground service
Foreground serviceForeground serviceForeground service
- уведомление, связанное с компонентом Foreground service, содержит кнопку действия;
- Service связан с проигрыванием медиа, телефонными звонками или навигацией (задается в категории уведомлений);
- параметр имеет значение , , или .
2. Запрет использования низкоуровневого API при работе с MAC-адресами
Android 12MAC-адреса
- если значение параметра больше 30, то вернется ;
- если значение параметра меньше или равно 30, то вернется заглушка .
ConnectivityManagerAPI
3. Сквозные касания через overlay блокируются
AndroidAndroid 12
- приложения, которые позволяют пропускать касания дальше через свои окна с помощью флага ;
- наложения, требующие разрешения (окна, использующие флаг );
- сообщения типа Toast.
- взаимодействие внутри приложения (окна показываются только тогда, когда пользователь взаимодействует с одним приложением);
- взаимодействие с доверенными окнами Accessibility, IME, Assistant (окна с типом не являются доверенными);
- взаимодействие с окнами, чей корневой визуальный элемент имеет значение видимости или ;
- взаимодействие с полностью прозрачными окнами (параметр имеет значение );
- достаточно прозрачные окна системных предупреждений (если общая непрозрачность не превосходит определенного порогового значения).
4. Запрет закрытия системных диалоговых окон
AndroidAndroid 12
- если приложение, ориентированное на Android 12, попытается закрыть системный диалог, то возникнет исключение SecurityException;
- если приложение со значением параметра до 30 включительно попытается закрыть системный диалог, то исключение SecurityException не возникнет. Неудачная попытка отразится записью в LogCat.
Android 12
- при работе инструментальных тестов;
- при отображении приложением окна, находящегося в верхней части панели уведомлений (верно для приложений со значением параметра до 30 включительно);
- при взаимодействии пользователя с уведомлениями (посредством нажатия на кнопки действий в уведомлениях) и запущенными компонентами Service или Broadcast receiver, обрабатывающими эти взаимодействия с приложением (верно для приложений со значением параметра до 30 включительно).