Основы DI и Dagger, как работает, настройка в проекте

  Рет қаралды 68,989

Android Broadcast. Все об Андроид разработке

Android Broadcast. Все об Андроид разработке

Күн бұрын

Пікірлер: 200
@ЕвгенийМихалец
@ЕвгенийМихалец 3 жыл бұрын
Информативно, никакой воды, полезные практики на примере, да еще и бесплатно. Кирилл, в раю для тебя выделено отдельное место :)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Спасибо 😊
@MrLight363
@MrLight363 3 жыл бұрын
Просто вышка. То что надо и все по делу👍
@ksz87
@ksz87 3 жыл бұрын
Отличнейший формат! Кратко и всё по делу. Спасибо за труд, Кирилл!
@codemachine19
@codemachine19 Жыл бұрын
Оооочень интересный урок. Спасибо большое, Кирилл. Появилось желание смотреть побольше твоего live coding content, потому что вижу очень много best practice for development. Thanks a lot =)
@ЕгорСолдатов-ы7э
@ЕгорСолдатов-ы7э 3 жыл бұрын
Лайк не глядя просто! Жаль, что нельзя еще один лайк после просмотра. Но вот комент напишу еще раз более подробно о своих впечатлениях!
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Супер! Жду ваш отзыв здорово поможет улучшать этот и будущие курсы
@luyt2
@luyt2 Жыл бұрын
Отлично, на одном дыхании смотрится. Спасибо за качественный контентк
@GriNAME
@GriNAME 3 жыл бұрын
Лайк и коммент желательно сотворить всем!))
@sergeynaksin5256
@sergeynaksin5256 3 жыл бұрын
Кирилл, вот прям красава. Хороший формат! Для начинающих прям огонь, всё в принципе доступно разложил.!
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Спасибо. Надеюсь следующий выпуск зайдёт не меньше! Там уже погружение в фичи
@fliker2309
@fliker2309 3 жыл бұрын
Ждём продолжения!! Спасибо!
@luckytima2315
@luckytima2315 3 жыл бұрын
Отлично! Определено надо делать продолжение)
@Stopkaaaa
@Stopkaaaa 3 жыл бұрын
Отличное видео получилось, жду продолжения! Спасибо👍
@CEPVAHT
@CEPVAHT 3 жыл бұрын
Спасибо за урок, все понятно и без лишней информации
@АндрейКолмогоров-б9ы
@АндрейКолмогоров-б9ы 3 жыл бұрын
Спасибо тебе Кирилл, это очень полезный курс
@motorInlive
@motorInlive 6 ай бұрын
Спасибо большое за ваши труды!
@AndroidBroadcast
@AndroidBroadcast 6 ай бұрын
☺️
@vladimirpustovit3782
@vladimirpustovit3782 3 жыл бұрын
Большое спасибо за курс! Как раз всё никак не разберусь, как правильно работать с даггером в многомодульном проекте.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Я вас как раз подготовлю к тому, чтобы это сделать лучше и пока как. Ребята из Лаборатории Касперского также поделятся своим опытом
@dimaklekchyan
@dimaklekchyan 3 жыл бұрын
Отличный материал, спасибо!
@LaVladz
@LaVladz 3 жыл бұрын
Спасибо, все понятно и интересно!
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Спасибо. Вы даже не представляете как я рад этому
@ЕвгенийКостров-в7н
@ЕвгенийКостров-в7н 3 жыл бұрын
Молодец, Кирилл! Спасибо, Кирилл!
@Станислав-л7ы2ф
@Станислав-л7ы2ф 3 жыл бұрын
Спасибо за видео. Жду следующего)
@serhiiwin3276
@serhiiwin3276 3 жыл бұрын
Отличное начало!
@Maribobah81
@Maribobah81 3 жыл бұрын
Кирилл, спасибо! Как всегда топчик!
@azizbekrasulmetov9293
@azizbekrasulmetov9293 Жыл бұрын
Все четко, понятно просто супер!!!
@ПавелЗубко-ц8ч
@ПавелЗубко-ц8ч 3 жыл бұрын
Лайк не глядя , спасибо огромное !
@ОлегШошин-п7х
@ОлегШошин-п7х 3 жыл бұрын
Если не трудно, было бы гораздо удобнее, если бы когда вы какие-то новые вещи рассказываете, выводить какую-то схему, где вы ее объясняете. На слух, иногда сложно составить всю картину происходящего. В данном ролике вроде бы все не так сложно, но думаю, было бы полезно.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
В будущих роликах практически теории и не будет, так что таких проблем не возникнет
@antaki93
@antaki93 Жыл бұрын
Практическая часть супер наглядная 👍
@kirill6020
@kirill6020 3 жыл бұрын
Спасибо за видео! Ждем продолжение!
@KabukiWarrior369
@KabukiWarrior369 3 жыл бұрын
Очень крутое и понятное объяснение, большое спасибо!
@MikhailGureev
@MikhailGureev 3 жыл бұрын
Большое спасибо, Кирилл.
@redfox6089
@redfox6089 3 жыл бұрын
Заранее лайк!!! Спасибо Вам!!!
@user-fc9gt6dl2i
@user-fc9gt6dl2i 3 жыл бұрын
Ждём следующую часть
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Уже вышел весь курс!
@dreaaaam98
@dreaaaam98 2 жыл бұрын
Супер. спасибо за материал)
@Tswet
@Tswet 3 жыл бұрын
Спасибо, хотелось бы больше теории
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Курс не хочется делать теоретическим, но обязательно пишите что хотите узнать лучше (только отдельным комментарием под видео, чтобы за него могли поголосовать люди)
@Tswet
@Tswet 3 жыл бұрын
@@AndroidBroadcast да просто бездумное копирование вашего кода тоже пользы много не принесет :( а с теорией может с умом бы копировали :) (хотя нет)
@Feivur
@Feivur 3 жыл бұрын
Спасибо, доходчиво и красиво изложено. В своё время отказался от Dagger в пользу Kodein, потому что Dagger показался неуклюжим, громоздким и overengeneered.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Какое впечатление складывается сейчас?
@Feivur
@Feivur 3 жыл бұрын
@@AndroidBroadcast Честно говоря, желания использовать не возникает. Выглядит страшно. Возникает недоумение, почему такой монстр популярнее других простых и компактных фреймворков. Но знать его в лицо надо, и твоё изложение очень помогает, жду следующие серии!
@facece1
@facece1 3 жыл бұрын
Спасибо Кирилл!
@Александр-м7о7т
@Александр-м7о7т 3 жыл бұрын
Спасибо за курс!
@СергійМурашев
@СергійМурашев 3 жыл бұрын
Интересно. Спасибо за лекцию
@andyousil910
@andyousil910 3 жыл бұрын
Идеальное объяснение, спасибо!
@TerebeninEP
@TerebeninEP 3 жыл бұрын
Урок отличный! Спасибо!
@Dtritus993
@Dtritus993 3 жыл бұрын
Спасибо за работу, было интересно 🤩😍
@ВладимирЧударевский
@ВладимирЧударевский 3 жыл бұрын
Каааеф, очень доходчиво
@KudashovDev
@KudashovDev 3 жыл бұрын
Крутой материал, коротко и понятно)
@MaksymXx
@MaksymXx 3 жыл бұрын
Супер, спасибо!
@nickolasivantsov260
@nickolasivantsov260 3 жыл бұрын
Nice ) Просто и доступно!
@ЕгорПоляков-т5ъ
@ЕгорПоляков-т5ъ 3 жыл бұрын
лайк сразу)
@maxsimpleapps
@maxsimpleapps 3 жыл бұрын
Отлично 🖖
@anmelnik
@anmelnik 3 жыл бұрын
кааайф, давай ещё)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Второй урок уже на канале
@jamesalexander1062
@jamesalexander1062 3 жыл бұрын
Круто, спасибо
@d.mertsalov
@d.mertsalov 3 жыл бұрын
Спасибо!
@druce18
@druce18 3 жыл бұрын
Лайк, спасибо!
@mrgagarinn
@mrgagarinn 3 жыл бұрын
Спасибо
@АндрейКорощупов
@АндрейКорощупов 3 жыл бұрын
Поменяйте, пожалуйста, звук переключения между темами в начале. Он какой-то резкий и громкий. По ушам сильно бьёт.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Окей, обратим внимание
@mrtwon8638
@mrtwon8638 3 жыл бұрын
@@AndroidBroadcast прошлое интро топ было, особенно музыка 👍
@РусланСамарбаев
@РусланСамарбаев 3 жыл бұрын
Ништяк!
@zokirjonqodirov6927
@zokirjonqodirov6927 3 жыл бұрын
спасибо большое👍👍
@axkov
@axkov 3 жыл бұрын
Спасибо за труд. Наверное, это лучшее видео среди ру-сегмента ютуба. Множество авторов статей по даггеру используют зависимость dagger-android, следует ли вообще пользоваться ею?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
dagger-android был раньше, но сейчас он уже deprecated и рекомендуется использовать Dagger Hilt dagger.dev/hilt/ и Jetpack Hilt d.android.com/jetpack/androidx/releases/hilt
@GHOST20095
@GHOST20095 3 жыл бұрын
Попробуй продублировать инфу по поводу второго видоса в описании к видео, либо в начале видоса вставить ее текстом, например. Многие смотрят не до конца, а лишь ту часть, которая им полезна и сразу вырубают видос без лайка и не понимают потом где продолжение курса)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Есть плейлист целый и выходят видосы. Тут я уже ничего не сделаю, если людям неинтересно
@mitiaygorodov4939
@mitiaygorodov4939 3 жыл бұрын
Спасибо за видео, очень познавательно. Cреди примеров я находил очень много тех, которые связаны именно с классами моделей. Но неоднократно слышал, что можно при работе с сетью, передавать с помощью DI репозиторий во ViewModel и т.д. Очень хотелось бы увидеть пример того, как это делать правильно, а также применение DI не только в работе с данными, если это допустимо. Спасибо!
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Это первая лекция курса и я не хотел нырять с головой в реальный код, дальше будет погружение в Android код по современным стандартам Google и применение Dagger там
@mitiaygorodov4939
@mitiaygorodov4939 3 жыл бұрын
@@AndroidBroadcast Спасибо! Очень полезный курс, всё очень понятно.
@СергейПанов-з3ц
@СергейПанов-з3ц 3 жыл бұрын
Хотелось бы увидеть конкретные примеры зачем нужен Dagger. Какие проблемы имеет код, в котором не используется DI? Может быть примеры "реальных" useCase'ов? Я предполагаю что Dagger облегчает написание тестов. Хотелось бы увидеть насколько легче писать тесты с Dagger'ом и без него?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Таких убеждений я проводить не буду. В этом видео я объяснил зачем он нужен - ослабление связи между типами и масштабирование кодовой базы
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Вот тут всё можно почитать, там совсем просто говориться о Dagger в тестах dagger.dev/dev-guide/testing.html
@petrushevandrey7481
@petrushevandrey7481 3 жыл бұрын
Спасибо, Надеюсь в будет объяснения как инжектить в классы в которых нет Context
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Так есть пример Repostiory. Context - такая же зависимость как и все остальные, разницы нет
@agentr227
@agentr227 3 жыл бұрын
📢Кто только начал учить Dagger 2 обратите внимание на версию Котлина в проекте. Почему? Потому что проекты на новых версиях Котлина работают с Даггером некорректно (Заработало с версией 1.4.32)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
С какой именно версией?
@agentr227
@agentr227 3 жыл бұрын
@@AndroidBroadcast с 1.6, которая стояла у меня, но пишут, что такие проблемы с 1.5+ версиями котлин. Проект просто крашился при билде после того, как пытался заинджектить поле в Activity. (У друга аналогично всё было, проект нормально стал запускаться после смены версии кота на 1.4.32)
@inquisitor4894
@inquisitor4894 Жыл бұрын
всё делал как в уроке, но не находит DaggerAppComponent
@inquisitor4894
@inquisitor4894 Жыл бұрын
Ответ прост: Нужно собрать проект, после проверить, должен появиться.
@axrorxojayodgorov3416
@axrorxojayodgorov3416 3 жыл бұрын
super
@PandaTop.
@PandaTop. 3 жыл бұрын
Залайкайте це відео )
@ЕленаМ-о7щ
@ЕленаМ-о7щ 3 жыл бұрын
ну круто же
@garifzyanovrr
@garifzyanovrr 2 жыл бұрын
Кирилл привет, у меня не появляется DaggerAppComponent и как скомпилировать граф зависимости?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Причины может быть 2: не проставлены аннотации или не подключен процессор аннотаций (зависимости в Gradle через kapt или apt). Вопросы лучше задавать тут Android Broadcast t.me/android_broadcast_talks
@alexeyflyagin
@alexeyflyagin Жыл бұрын
Подскажите, была ли решена проблема у вас? Я уже и проверил все аннотации по тысячу раз и пробовал с kapt и c apt и пытался и так и этак, а все равно не генерируется ничего. Если решили проблему, не подскажете ли как мне ее решить?
@AndroidBroadcast
@AndroidBroadcast Жыл бұрын
Пишите в t.me/android_broadcast_talks
@voicetv9048
@voicetv9048 2 жыл бұрын
Возникли некоторые вопросы : почему вы расширили именно Сontext? Что если у нас будет несколько компонентов типо ActivityComponent, FragmentComponent расширить Context опять ? Нельзя ли создавать какой нибудь глобальный типизированный функция и в зависимости от типа вернуть нужные компонент ?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Указывайте таймкод, я не понимаю про что вы говорите
@voicetv9048
@voicetv9048 2 жыл бұрын
@@AndroidBroadcast 12:40 вы расширили Context при использовании даггер в андроид , про него и был вопрос !
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Это просто вспомогательная функции, вы можете написать свою какую угодно.
@oleg12395
@oleg12395 2 жыл бұрын
Все огонь, но то ли Dagger поменялся, то ли я по невнимательности что-то пропустил, но у меня в упор не создается класс DaggerAppComponent
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Подключил kapt или apt и настроил с Dagger для генерации кода?
@oleg12395
@oleg12395 2 жыл бұрын
@@AndroidBroadcast да, все огонь. Спасибо, с непривычки бывают застревания в таких простых вещах
@andrey.shpilevoy
@andrey.shpilevoy Жыл бұрын
Коллеги, вот у нас на фирме во всех проектах подключен и используется Dagger, но я за 4 года так и не понял зачем, какова его ценность в реальном мире?
@AndroidBroadcast
@AndroidBroadcast Жыл бұрын
Тогда вам стоит лучше почитать про архитектуру софта и зачем нужен DI, либо пользоваться другим решением
@user-not_defined
@user-not_defined 3 жыл бұрын
насчёт inject -ирования активности не очень понял, обязательно её инжектировать в AppComponent? То есть если мы хотим заинжектить в любой класс не помеченный интерфейсом @Component то должны сам класс заинжектировать в AppComponent?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
В Componet и Subcomponent добавляются методы в которые можно будет выполнить inject зависимостей по вызову этого метода из сгенерированного компонента. Лучше выполнять inject через конструктор, тогда такие методы в Componet не понадобятся, но не у всех компонентов можно поменять конструктор. Например, стандартный компоненты Android (Activity, Service) требуют наличия конструктора по умолчанию и создаются его вызовом, а позже в onCreate() можно сделать inject зависимостей
@НиколайИртуганов
@НиколайИртуганов 2 жыл бұрын
Почему может не генерироваться DaggerAppComponent?
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
- Не настроил процессор аннотаций (kapt для Kotlin) - Нужно чтобы был интерфейс AppComponent с аннотацией @Component - Скомпилировать проект (возможно лучше начисто)
@НиколайИртуганов
@НиколайИртуганов 2 жыл бұрын
добавил id("kotlin-android"), id("kotlin-kapt"), при билде дает A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction, stacktrace ничего внятного не говорит
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Посмотрите раздел зависимостей в Gradle. Это банальный вопрос - вы подключили процессор аннотаций, но нужнл с помощью него подключить dagqer compiler. Ну странице документации Dagger есть все это и я показывал в примере
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon patreon.com/android_broadcast 🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast 📺 Курс по Dagger 2 clck.ru/ViWKV
@ВладимирГросс-я1ъ
@ВладимирГросс-я1ъ 3 жыл бұрын
На одном из проектов использовал by lazy для получения компонента. Что думаете на этот счет?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Делегат lazy? Это случаем не Koin?
@ВладимирГросс-я1ъ
@ВладимирГросс-я1ъ 3 жыл бұрын
@@AndroidBroadcast нет не Koin. Например _val appComponent: AppComponent by lazy { DaggerAppComponent.create() }_. Тем самым ухожу от использования lateinit.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Я подумал ты про inject, а не создание AppComponent
@ramsesii821
@ramsesii821 3 жыл бұрын
Большое спасибо. У меня вопрос, чутка не понял А зачем проверять тип контекста при получении appComponent`a ? В коде when (this) { is MainApp -> appComponent else -> this.applicationContext.appComponent } Зачем проверять, если можно сразу вызвать this.applicationContext.appComponent ? Какое здесь отличие ? В любом же случае достанем тот же самый appComponent
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
applicationContext также вернет тип Context. Свойство appComponent существует только в типе MainApp, соответственно нам нужно получить переменную такого типа. is MainApp в when позволяет нам убедиться что текущий Context - это MainApp и автоматически выполняет cast
@maleno4212
@maleno4212 10 ай бұрын
Здравствуйте, я правильно понимаю, что это нужно для того чтобы не хранить applicationContext в глобальной переменной? И управлять порядком сборки MainApp? Или я не так понял, в чем смысл DI. Можете, пожалуйста, объяснить, очень хочу использовать в своем проекте.
@НикитаБухарин-ж9г
@НикитаБухарин-ж9г 5 ай бұрын
Чтобы в ручную не вызывать каждую зависимость в каждом своем классе. Ты в di устанавливаешь как они будут передаваться . И потом просто передаешь их в конструктор класса. По итогу все зависимости указываются в конструкторах класса , а DI сам уже их создает и передает. DI был создан чтобы отделить слои приложения от зависимости . Чтобы на пример presentation слой ничего не знал про data слой
@badadinfanti4553
@badadinfanti4553 3 жыл бұрын
Если я создам объект в Application, а потом буду обращаться к нему из разных частей кода, например, из фрагментов - это же и есть "создать в одном месте", а обращаться отовсюду? Насколько я понимаю, даггер так и работает под капотом? Application - это же, по сути, единая точка входа в андроид приложение, то что живет на протяжении всего времени жизни запущенного приложения и точно существует в любой момент времени.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Не совсем так, это уже больше Service Locator. Также неправильно перегружать логикой Application класс и хранить всё на протяжении его жизни. То что вы описали рабочий подход, но DI имеет больше возможностей и независимости. Рекомендую почитать стать на тему сравнения
@MarsIanin06
@MarsIanin06 3 жыл бұрын
Благодарю за видео, Кирилл! Каким образом AppComponent распознает метод где указан класс куда надо будет предоставить зависимость? Я так понимаю там под капотом проверка что если задается функция с любым названием, но с входным параметром (fun inject(activity: MainActivity)) , значит эта функция как раз и отвечает за требование предоставление зависимости, верно?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Процессор аннотаций находит все классы, которые помечены аннотациями Dagger и на этапе процессинга всё связывает
@MarsIanin06
@MarsIanin06 3 жыл бұрын
@@AndroidBroadcast Понял, спасибо!
@ЕвгенийМоскаленко-у9щ
@ЕвгенийМоскаленко-у9щ 3 жыл бұрын
Целесообразно ли использовать dagger support?
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Я так понял речь про Dagger Android. Его уже не рекомендуют использовать, а брать Hilt
@musicchannel7700
@musicchannel7700 3 жыл бұрын
Было бы хорошо если бы вы опираясь на свой опыт сделали тестовый проект несложный с применениям разных инструментов по типу того же Dagger 2/MVVM/ и т.д =)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Да, это будет ближе к концу курса
@Trecoolerok
@Trecoolerok 3 жыл бұрын
Хотелось бы подробное видео про lateinit. До сих пор не понимаю, что с ним не так. По-хорошему, jb должны были хорошо над ним поработать (как с object-классами), чтобы все было ок с ним.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Отдельного видео он очно не заслуживает, может если только в группе советов про Kotlin
@ДмитрийГорбачев-д2ц
@ДмитрийГорбачев-д2ц 3 жыл бұрын
в чем разница между lateinit var и private var _appComponent: AppComponent? = null internal val appComponent: AppComponent get() = checkNotNull(_appComponent) { "AppComponent isn't initialized" } в обоих случаях если не будет инициализации то будет ошибка только текст разный
@ДмитрийГорбачев-д2ц
@ДмитрийГорбачев-д2ц 3 жыл бұрын
просто не могу понять насколько сильная была боль, которая связана с lateinit, что каждый раз вы говорите о том, что лучше не использовать?) это же по факту тот же nullcheck.
@tayabuz
@tayabuz 3 жыл бұрын
При использовании lateinit требуется проверять с помощью метода isInitialized, что объект был проиницилизирован, что может сказаться на производительности Плюс не стоит забывать про UninitializedPropertyAccessException
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
По сути поведение конечное одинаковое, но мне не нравится что lateinit выкидывает непонятное исключение и порой разработчики им начинают увлекаться, даже там где это не надо. Моё правило - lateinit только где есть аннотация Inject (даже в Detekt есть такое правило)
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Если вы один, то контролировать это просто. Но вот на уровне команды правила нужны. Особенно я помню как наелся на нескольких проектах с крешами в проде из-за неоправданного использования lateinit, а понять по stack trace было невозможну исходную причину
@ДмитрийГорбачев-д2ц
@ДмитрийГорбачев-д2ц 3 жыл бұрын
@@tayabuz проверять нужно, только если вы не уверены в том что переменная проинициализирована.
@TheKostya29
@TheKostya29 3 жыл бұрын
А зачем когда есть уже инджект нам нужна проперти computer в интерфейсе AppComponent это избыточно, можно удалить.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Это было лишь для примера
@TheKostya29
@TheKostya29 3 жыл бұрын
@@AndroidBroadcast я так и понял, но если на место новичка стать, кто-то может начать это делать у себя по аналогии
@ДмитрийАзаренко-т4э
@ДмитрийАзаренко-т4э 3 жыл бұрын
Можно ли показывать примеры сразу схожие на реальные, т.е. вот в этой папке у нас компонент, тут в отдельных модули. Вот где в итоге должен быть Context.appComponent я не особо понимаю, а в остальном все доступно, спасибо.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Где вы поместите это расширение - неважно. Можно и без него обойтись, но оно продемонстрировано для удобства. Выносить его в отдельный файл было бы только расфокусом во время демонстрации кода
@scraplesh
@scraplesh 3 жыл бұрын
Посидел пару лет на коине, теперь хочу вернуться в даггер. Правда через хилт, но не суть.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Hilt тоже будет в курсе
@МагестЛоил
@МагестЛоил Жыл бұрын
А как строить модуль если объект содержит примитивные типы или стринг? Или как я понял дагер вообще не нужен для этого т.к это не его компетенция т.к на контроллере у меня прога просто не компилировалась.
@AndroidBroadcast
@AndroidBroadcast Жыл бұрын
С примитивными типами строить не получится, надо через типы-обертки примитивов или свои делать + лучше начать сразу использовать квалификаторы. На моем опыте все какие-то параметры оборачивались в один большой объекте конфига
@ОлегТимофеев-щ3ш
@ОлегТимофеев-щ3ш 3 жыл бұрын
Я только начинаю знакомится с миром андройда, и у меня тут возникает вопрос: если activity, и иные примитивы андройда не предполагают чтобы в них что-то внедряли - почему не использовать подход service locator, тем более dagger как понимаю даёт возможность это делать через тот самый create или билдер...
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Activity - это лишь точка входа и она не подстраивалась под какие-то либы или фреймворки. Много компонентов требуют наличие конструктора по умолчанию (без параметров)
@ОлегТимофеев-щ3ш
@ОлегТимофеев-щ3ш 3 жыл бұрын
@@AndroidBroadcast пока я склоняюсь к тому, что пытаются впихнуть di в сущность которая своим интерфейсом показывает что все зависимости можно добавлять только через другой механизм. Но сообществу таки надо только чтобы было @inject initlater... Лучше бы гугл научил людей работать с состоянием, а не бороться с пересозданием зависимостей, когда activity пересоздалась...
@stanislavkorolev376
@stanislavkorolev376 3 жыл бұрын
лучше ведь binds использовать вместо provides
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Если есть возможность, то да. Подробнее об этом будет в следующем выпуске
@EvgeniyGooDiBunakov
@EvgeniyGooDiBunakov 3 жыл бұрын
А как настроить такую тему в студии? ))
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Что именно?
@EvgeniyGooDiBunakov
@EvgeniyGooDiBunakov 3 жыл бұрын
@@AndroidBroadcast цвета
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
Это стандартная темна тема Darcula + плагин plugins.jetbrains.com/plugin/10080-rainbow-brackets
@naronwaz7824
@naronwaz7824 2 жыл бұрын
Не не не первую зависимость я уже получил, больше не надо
@Feivur
@Feivur 3 жыл бұрын
На тему опроса, почему не велик интерес к роликам - да просто некогда. Нужна отдельная кружка чаю, чтобы сесть и посмотреть.
@AndroidBroadcast
@AndroidBroadcast 3 жыл бұрын
😔
@sfsd9507
@sfsd9507 2 жыл бұрын
kzbin.info/www/bejne/Z5WypJicZ7-th5o 10.09. появилась проблема. не видит DaggerAppComponent . 10 раз перепроверил код. ощущение что с тех пор чтото изменилось в гредле или не хватает чего то на уровне гредл проджекта. версия 2,44,2 + kapt {correctErrorTypes = true} тоже не помогло =(
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Класс генерируется вообще?
@sfsd9507
@sfsd9507 2 жыл бұрын
@@AndroidBroadcast класс DaggerAppComponent не генерируется. при попытке его вписать ИДЕ предлагает только: DaggerCollections и DaggerGenerated. аннотации распознает, dagger.аннотацию импортирует в документе
@sfsd9507
@sfsd9507 2 жыл бұрын
@@AndroidBroadcast так... завел. добавил к аннотации @Component аннотацию @Singleton, не знаю на сколько это верное решение
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
Надо смотреть настройку проекта, а не только код
@AndroidBroadcast
@AndroidBroadcast 2 жыл бұрын
@@sfsd9507 Лучше задайте вопрос в t.me/android_broadcast_talks
@VoidObj
@VoidObj 3 жыл бұрын
13:30 А я пришел к рекурсии.. о_О
@VoidObj
@VoidObj 3 жыл бұрын
Теста ради заменил ваш else на else -> DaggerAppComponent.builder().contextModule(ContextModule(this)).build() и все взлетело. Понятное дело, что это ужас и так делать нельзя. Забавно..
@VoidObj
@VoidObj 3 жыл бұрын
ГОСПОДИЯИДИОТ... 🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️ Всего-то в манифесте забыл прописать.. А ведь говорили "Не забудьте прописать в манифесте"!
@UBN_100
@UBN_100 3 жыл бұрын
Не понимаю куче восхитительных отзывов. Начало нормально , но потом что-то намудрил, чёрт ногу сломит....
@mikhaillazarev5378
@mikhaillazarev5378 2 жыл бұрын
Надеюсь автор читает текст, а не говорит от себя, потому что так без эмоций рассказывать это жесть.
@МагестЛоил
@МагестЛоил Жыл бұрын
Я при любых условиях при попытке скомпилировать проект где есть appComponent даже если он пустой или даже не содержит модуля выдает A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.InvocationTargetException (no error message)
@AndroidBroadcast
@AndroidBroadcast Жыл бұрын
Похоже что есть kapt в модуле не настроен kotlin
@Oleg_Bessonov
@Oleg_Bessonov 3 жыл бұрын
Спасибо, ждём продолжения!!!
@PavelStr-x5w
@PavelStr-x5w 10 ай бұрын
Большое спасибо за урок!!!
@Framidilful
@Framidilful 2 жыл бұрын
Шикарно, спасибо
@ramilskl
@ramilskl 3 жыл бұрын
Круто! Спасибо!
@user-not_defined
@user-not_defined 3 жыл бұрын
Спасибо большое
@Ilia_Goncharuk
@Ilia_Goncharuk 3 жыл бұрын
Спасибо!
@ismirnoff
@ismirnoff 2 жыл бұрын
Спасибо!
Организация модулей. Типы Inject. Способы доставки зависимостей
25:18
Android Broadcast. Все об Андроид разработке
Рет қаралды 41 М.
Dagger 2 в многомодульном Android проекте
16:37
Android Broadcast. Все об Андроид разработке
Рет қаралды 18 М.
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Dagger Component, Subcomponent, Scope, Reusable
22:38
Android Broadcast. Все об Андроид разработке
Рет қаралды 27 М.
Learn Dependency Injection and Write Better Code
21:52
Amigoscode
Рет қаралды 179 М.
Dagger Multibindings. Plugin architecture [RU]
17:24
Android Broadcast. Все об Андроид разработке
Рет қаралды 15 М.
Binder - как устроена работа с несколькими процессами в Android
56:44
Android Broadcast. Все об Андроид разработке
Рет қаралды 30 М.
Google заставит разработчиков поддерживать планшеты в Android 16
15:59
Android Broadcast. Все об Андроид разработке
Рет қаралды 3,3 М.
Hilt and dependency injection - MAD Skills
13:06
Android Developers
Рет қаралды 49 М.
Hilt - лёгкий старт в Dagger
32:26
Android Broadcast. Все об Андроид разработке
Рет қаралды 15 М.
Что такое DDD за 10 минут с примерами
10:03
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН