Обложка канала

Android Broadcast. Страница 139

Качественная выборка Android Dev новостей, тезисы важных новостей и статей, личное мнение

  • Android Broadcast

    #Security #Networking #OkHttp

    How to Prepare Your Android App for a Pentest – Networking Edition

    Pentests (penetration testing) - это симуляция кибер атаки на приложение с целью выявления уязвимостей, которые могут быть использованы злоумышленниками.

    В статье разбираются такие понятия как TLS, Certificate pinning, Hostname verification, а самое главное интеграция этого в вашего приложения на основе OkHttp.
  • Android Broadcast

    #AndroidAcademy #Minsk #Coroutines

    Android Academy Minsk Advanced Topic #0 Coroutines

    Android Academy Minsk начинает год с Advanced курса в рамках которого вы сможете узнать о более продвинутых практиках в Android разработке

    Начнется курс с рассказа о Kotlin Coroutine. Kotlin изменил Android разработку и вывел ее на новый уровень. Coroutine позволили упростить написание асинхронного кода, сделав ее эффективнее и потребляя меньше ресурсов, а также представив Flow - реактивный подход, который по скорости работы уделывает RxJava 😮 И расскажет об этом всем Йонатан Левин.

    Регистрируйтесь! Количество мест ограничено!
    Задасто свои вопросы вы можете в @androidacademyminsk

    Для тех кому не хватит мест - не переживайте, будут доступны записи докладов.

    Следующим занятием пройдёт воркшоп, который позволит закрепить полученные знания на практике
  • Android Broadcast

    #DependencyInjection #Dagger #Fragment

    Constructor injection into Fragments with respect of scopes

    Android имеет одно неприятное ограничения - основные компоненты должны создаваться только через конструктор по умолчанию. Исключением стал Fragment в AndroidX.Fragment 1.1.0, который позволяет задать кастомную FragmentFactory в FragmentManager. Я уже ранее рассказывал как можно соединить Dagger и Inject в конструкторы Fragment.

    В статье вы можете найти как решить проблему, когда у вас есть Dagger Scope и нужно делать inject зависимостей из них.
  • Реклама

  • Android Broadcast

    #Gradle #Flake #Test

    Introducing flaky test mitigation tools for Gradle

    Разработчики из Gradle представили новый плагин Test Retry Gradle Plugin, который повторяет выполнение неудачно выполнившихся тестов заданное количество раз. Flaky тесты отображаются специальным образом в тестовом отчете и Build Scan

    Поддерживается следующие тестовые фреймворки:
    👉 JUnit4
    👉 JUnit Platform (JUnit 5)
    👉 Spock
    👉 TestNG
  • Android Broadcast

    #WorkManager

    When WorkManager Stops Working

    Будьте внимательны при использование Work Manager unique work и политики APPEND. Проблема заключается в том, что это политика реализована на цепочках и если одна из задач выполняется с ошибкой, то все последующие не будут выполняться.

    Что можно сделать:
    👉 Не использовать политику APPEND
    👉 Никогда не давать unique work завершаться с ошибкой. Только Success и внутри объект с результатом
    👉 Использовать WorkManager.pruneWork()

    Ждем когда Google исправит эту досадную реализацию
  • Android Broadcast

    #MotionLayout #Animation #AndroidStudio

    How to perfect android animations using MotionLayout

    MotionLayout привносит совсем новый уровень удобства создания анимаций в Android Studio, создавая их не в коде, а через визуальный редактор. В статье разбирается как сделать анимацию с помощью нового инструмента
  • Android Broadcast

    #RxJava #Kotlin

    Fundamentals of RxJava with Kotlin for absolute beginners

    Хороше интро в мир RxJava на Kotlin:
    👉 Что такое RxJava
    👉 Создание Observable
    👉 Backpressure
    👉 Типы emitter: Flowable, Maybe, Single, Completable
    👉 Schedulers
    👉 Операторы
    👉 Disposable - отмена выполнения
    👉 Subject = Observable + Observer
  • Android Broadcast

    #UI #ConstraintLayout

    The Essential Components of ConstraintLayout

    ConstraintLayout призван создавать сложные иерархию View без необходимости вложений. Возможности о которых вы могли не знать:
    👉 Соотношение сторон (замена PercentFrameLayout)
    👉 Guideline
    👉 Barrier
    👉 Group
    👉 Chains (замена LinearLayout)
    👉 Flow

    Эти возможности разбираются в статье, за исключением Flow (про него читайте в отдельной статье)
  • Android Broadcast

    #Gradle

    Optional dependencies are not optional

    Gradle в версии номер 6.0 добавил много возможностей для управления зависимостями. Также этому помогло введение в боевой режим Gradle Module Metadata, который позволяет описывать больше информации по сравнению с pom.xml.

    В статье разбирается подключение опциональных зависимостей и подключать опциональные зависимости для необходимых функций вашего приложения
  • Android Broadcast

    #Kotlin #CodeQuality #Coroutines

    Вышел Detekt 1.4.0

    Вышла новая версия статического анализатора Kotlin кода Detekt 1.4.0 в которой появилась поддержка правил для Coroutine. Полный список изменений:
    🔥 Новая категория правил coroutines
    🔥 Новое правило GlobalCoroutineUsage, которое отслеживает использование GlobalScope. По умолчанию выключено
    🔥 Новое правило RedundantSuspendModifier, которое проверят,что suspend модификатор указан только там, где это нужно. Например, у функций у которых есть вызов других suspend функций
    👉 KtLint обновлён до 0.36.0
    👉 Свойства ignoreOverriddenFunction и ignoreOverriddenFunctions для некоторых правил унифицированы в одно - ignoreOverridden
    👉 Улучшен анализ кода некоторыми правилами
    👉 Исправление багов
  • Android Broadcast

    #MotionLayout #Animation

    Creating Onboarding Flow with MotionLayout

    MotionLayout и визуальный редактор анимаций на его основе уже стучатся в дверь в Android Studio 4.0. В статье автор разбирает как с помощь нового Layout сделали красивую анимацию Onboarding с Bubble
  • Android Broadcast

    #Kotlin

    Safely accessing lateinit variables

    Рецепт безопасного обращения к lateinit переменным в Kotlin, которое появилось в версии 1.2:
    lateinit var fullName: String

    if (::fullName.isInitialized) {
    print("Hi, $fullName")
    }

    Только не проще ли бы использовать nullable property и использовать null со старой доброй проверкой if (fullName != null).

    Моя рекомендация - не стоит убегать от nullable значений, lateinit должно использовать только в случаях когда у вас инициализация происходит не в конструкторе, а в методе который вызывается сразу за ним, например Activity.onCreate(). Причем метод откуда приходит значения не должен быть асинхронным.

    Заменить lateinit можно nullable property или делегатом lazy. А вообще используйте его только с Dagger в Android компонентах.
  • Android Broadcast

    #Coroutines

    Android Broadcast Podcast #4: "Coroutines Under The Hood" c Ильмиром Усмановым

    Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллионы разработчиков ждут покорения новых вершин.

    Ильмис Усманов - разработчик Kotlin/JVM компилятора в JetBrains. За его плечами 6 лет опыта разработки компиляторов, 2 из которых - поддержка Coroutine в компиляторе. Также наш гость контрибьютил в ART (Android Runtime).

    В выпуске вы узнаете:
    - Как устроиться в JetBrains
    - Как развлекаются программисты из JetBrains
    - Coroutine в Jetpack Compose
    - Почему релиз Jetpack Compose может затянуться
    - Новый IR backend Kotlin компилятора
    - Что будет в Kotlin 1.4 для Coroutine
    - Jake Wharton исправляет байт-код от Kotlin/JVM
    - Какие возможности могут появиться в Coroutine в будущем
    - Улучшения в дебаггере IDEA для поддержки Coroutine
    - Inline кода, благодаря которому Flow работают так быстро

    Полезные ссылки:
    👉 Coroutines Keep
    👉 Доклад про inline Coroutine от Ильмира
    👉 Kotlin Flow
    👉 Kotlin Slack
    👉 Kotlin Telegram
    Android Broadcast #4 "Coroutines Under The Hood" c Ильмиром Усмановым

    Поговорили с Ильмиром Усмановым о устройстве Coroutine под капотом и о их будущем, а также о том какого работать в JetBrains над проектом, от которого миллио...

    YouTube
  • Android Broadcast

    #JetpackCompose

    A Deep Dive Into Jetpack Compose

    "This article is not about how to use Jetpack Compose or its basics" - вот такой фразой начинается статья. В статье разбирается почему нам нужно заменить систему View и как это делается в Jetpack Compose
  • Android Broadcast

    #Kotlin #Operator

    Companion object invoke operator overloading for default constructor argument in generic classes

    Встречались ли вы с возможность, что вы можете создать объект интерфейса через конструктор? Спобов для этого 2:
    👉 Создать функцию c именем интерфейса в том же пакете где лежит интерфейс (например так делается для List)
    👉 Переопределить оператор invoke

    В статье разбирается пример как invoke оператор помог задать дефолтное значение в конструкторе, в котором принимается generic параметр
  • Реклама

  • Android Broadcast

    У меня всегда была мечта сделать конференцию для Android разработчиков. Только по этой технологии и все что связано с ней. Но мир суров и на любую конференцию нужен бюджет и аудитория. Очень хочется узнать интересно было ли вам прийти на такую конференцию.

    Давайте обсуждать в @android_broadcast_discussions
  • Android Broadcast

    #Tests #Intro

    Серия статей которая делает вступление в типы тестирования на Android и с помощью каких инструментов их можно осуществлять

    Статьи:
    1️⃣ Типы тестов, пирамида, основные библиотеки и инструменты
    2️⃣ Non-instrumented (они же Unit) тесты, Robolectrics
    3️⃣ Instrumented тесты: UIAutomator, Espresso
    4️⃣ "End-to-End" и ручное тестирование: Appium, типы "End-to-End" тестов
  • Android Broadcast

    #Gradle

    Decommissioning HTTP for Gradle Services

    Начиная с 15 января 2020 Gradle сервисы станут доступны только по HTTPS. Если вдруг у вас что-то перестанет собираться - обратите внимание.

    Что будет затронуто:
    👉 Gradle Plugin Portal (plugins.gradle.org/m2)
    👉 Gradle Distributions - сервис для загрузки Gradle Wrapper

    Проверьте в своем проекте distributionUrl в файле gradle/wrapper/gradle-wrapper.properties