Хотите делать приложения, которыми будут пользоваться во всем мире? Тогда записывайтесь на Факультет iOS-разработки образовательной экосистемы GeekBrains. Научитесь кодить на Swift и Objective-C, а потом придумаете свой фоторедактор, органайзер или почтовый клиент для айфона или мака.
Учителя факультета — опытные iOS-разработчики. Будет много практики: сделаете приложения для поиска билетов, интернет-магазина, социальной сети «Вконтакте». Поработаете над проектом в команде. В общем, получите крутые навыки, диплом и сертификат. Кстати, в GeekBrains не только научат новой профессии, но и помогут начать карьеру — студентов курируют HR-специалисты: вам гарантировано трудоустройство после успешного прохождения обучения.
После покупки GitHub компанией Microsoft сервис стал обрастать кучей возможностей и стал не только местом хранения кода, но CI/CD (GitHub Actions) и хранилищем артефактов. Причем все это доступно бесплатно, естественно в ограниченном количестве.
В статье автор разбирает как использовать эти возможности, чтобы автоматизировать сборку Android артефактов, тестирование, публикацию релиза + уведомление в Slack. Для всего этого уже существует огромный набор готовых Action от разработчиков, которые и используются в статье.
IDEA помимо хорошего функционала по навигацию и рефакторинга кода содержит внутри себя множество проверок кода на разных языках - статический анализ. Использовать их отдельно от IDEA не представляется возможным, но новый продукт от JetBrains это делает. Встречайте Qodana!
Проект состоит из 2 частей: ядро IDEA без GUI для использования на CI как линтера и интерактивный Web UI для отчётов.
Посмотреть примеры работы можно на qodana.beta.teamcity.com (логинтесь как гость) и в любом проекте открывает таб "Qodana".
Новая неделя принесла нам целую кучу нового функционала в стабильных версиях: 👉 Новое Activity Result API 👉 Рефакторинг внутренностей Fragment 👉 Новое API для передачи/получения результата между Fragment 👉 Улучшения работы с Lifecycle 👉 Возможность получать LifecycleOwner, ViewModelStoreOwner из View 👉 Deprecation onAttachFragment(), FragmentViewPager, Fragment.setRetainInstance() и др. API
С переходом нового компилятора Kotlin в Beta статус плагины компилятора тоже развиваются. Помните Kotlin Symbol Processing(KSP), которая призвана ускорить генерацию кода в Kotlin проектах, заменив KAPT? Так вот она перешла в альфу
Статус поддерживаемых библиотек сейчас можно найти здесь, а также добавить те, которые важны вам. Сейчас адаптацию пока начали делать только в Room.
Вышел Dagger 2.32 👉 В AssistedFactory теперь надо явно задавать имена для аргументов, которые имеют одинаковый тип 👉 Исправление багов в генерации AssistedFactory
Hilt 👉 Новый метод delayComponentReady() в HiltAndroidRule, который позволяет инициализировать компоненты в тестах до запуска выполнения теста 👉HiltAndroidRule теперь требует чтобы inject() вызывался не более одного раза в тесте 👉 Удалили deprecated ApplicationComponent 👉 Исправили работу с Android Gradle Plugin 4.2.0-beta04
После объявление о закрытие JCenter стали как никогда актуальны статьи о переезде в Maven Central и их посыпалось как из ведра. В статье рассматривается публикация артефактов, автоматизация процесса и примеры
Если вы давно хотели поделиться с профессиональным сообществом полезными знаниями и заодно устроить себе челлендж, но все ждали знака — это он. Пришлите заявку, пройдите отбор и выступите в прямом эфире Mobius 2021 Piter, который пройдет 13-16 апреля.
Больше всего ждут следующие темы: 👉 Платформы под капотом 👉 Software Craftsmanship 👉 Архитектура; 👉 Качество продукта; 👉 Тренды в мобильной разработке 👉 Инфраструктура
Но этим списком не ограничивается — вы можете подать заявку с любой темой из области мобильной разработки. Если у вас мало опыта публичных выступлений или вы сомневаетесь в своей теме, все равно подавайте. Программный комитет конференции поможет подготовить материал и выступление, а также улучшить ваши ораторские навыки.
Intent вложенный в другой Intent может стать уязвимостью вашего приложения. Проблема заключается в том что вы можете положить Intent, который должен запустить компонент вашего приложения, а это возможно только если он будет публично доступен (в манифесте стоит exported=“true”) либо открыт доступ приложениям подписанным таким же ключом как у вас.
Решением является использование PendingIntent, который в отличие от Intent всегда выполняет в Context в котором он был создан т.е. вызов будет происходить как будто все происходит внутри вашего приложения. Тем самым вам не придется открыть чего либо наружу. Заметили что все системные API принимают именно PendingIntent, а не Intent?
Сталкивались с тем что Android Lint жалуется на слишком большой VectorDrawable у вас в ресурсах? Всё верно! Авторы фреймворка задумывались и VectorDrawable как о легком варианте иконок, а не сложных графических ресурсах.
В статье автор показывает проблемы и предлагает несколько утилит для оптимизации SVG: 👉Avocado 👉Svgo 👉Svgomg
Также как вариант может сработать взять стандартную Material иконку не ту, которую дал дизайнер, а добавить из пресета Android Studio. Дизайнеры берут вариант SVG, который неоптимизирован для Android VectorDrawable, а в AS лежат оптимальные.
Руководство по миграции с Kotlin Synthetic на View Binding, а именно автор рассказывает как это сделать быстрее, а не очередной "how-to" переписать: 👉 Используй viewBinding делегат 👉 Как сделать шаблон для viewBinding в Android Studio 👉 Используйте Kotlin with(binding) { ... }