Кинжал 2 примера

Dagger 2 не за горами, но доступные примеры даже не скомпилируются сразу, а документация представляет собой копирование-вставку-замену из Dagger 1.

У кого-нибудь есть пример правильного приложения, работающего на Google Dagger 2?


person MLProgrammer-CiM    schedule 19.11.2014    source источник
comment
Здесь примеры компилируются нормально. Какие ошибки вы видите?   -  person Jake Wharton    schedule 20.11.2014
comment
Есть еще один, но я добавлю конкретный пример завтра. Для справки, ссылки в проекте lib с multiDex, но с использованием их в проекте основного приложения, последней версии Android Studio, BuildTools 21.1.+   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
Что касается зависимостей, предоставляется dagger-compile, но компилируется dagger, как в библиотечном проекте.   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
Примеры, вероятно, хороши, но примеры, дублированные в моей настройке проекта, - нет.   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
Кроме того, классы Dagger_ либо не будут генерироваться, либо подхватываться в индексах. Для подобных подходов, таких как Project Lombok, необходим плагин, чтобы редактор понимал генерацию кода, но даже выполнение этого вручную не принесет результатов.   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
По сути, после этого примера я обновил github.com/JakeWharton/u2020 до Dagger2.   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
См.: github.com/JakeWharton/u2020/pull/42 для первоначального Dagger 2. версия.   -  person Jake Wharton    schedule 20.11.2014
comment
apt вместо предусмотренного для модуля -compiler. Отмеченный.   -  person MLProgrammer-CiM    schedule 20.11.2014
comment
Этот пример тоже работает github.com/gk5885/dagger-android-sample   -  person MLProgrammer-CiM    schedule 30.11.2014
comment
Итак, единственный способ сделать сгенерированные классы Dagger_ корректно видимыми с точки зрения IDE — нужен какой-то плагин? По умолчанию IDE (Android Studio, например) не может корректно работать с классами Deggar_?   -  person XZen    schedule 16.12.2014
comment
То же, что и с Lombok Plugin, по-видимому, да.   -  person MLProgrammer-CiM    schedule 16.12.2014
comment
Что бы вы искали в принятом ответе на этот вопрос? Я вижу несколько основных примеров из ответов ниже. Вы ищете больше ясности, большие приложения?   -  person Michael Alan Huff    schedule 04.02.2015
comment
Любой вариант одинаково хорош, к нему подходят по-разному, а также из исходного примера. У меня не хватает духу просто выбрать одно как правильное.   -  person MLProgrammer-CiM    schedule 04.02.2015
comment
Проверьте эту ссылку Reddit. Может быть, это будет полезно для вас. redd.it/8az1wv   -  person Hafiz Waleed Hussain    schedule 09.04.2018
comment
См. самый простой образец кинжала 2 с последней версией github.com/rkandoroidrepo/android-dagger2-example< /а>.   -  person ramkrishna kushwaha    schedule 26.07.2019


Ответы (4)


Я только что опубликовал пример приложения на основе Gradle, которое объединяет Dagger2, Retrolambda, Butterknife и Lombok. Вы можете найти его здесь: https://github.com/mgrzechocinski/dagger2-example.

Надеюсь, это поможет :)

person mateusz.grzechocinski    schedule 12.12.2014

Я только что перенес приложение u2020-mvp на Dagger 2. Мы используем его в качестве приложения-песочницы. Между прочим, в Dagger 2 реализована хорошая реализация прицелов. Компоненты действительно важны. И он основан на u2021, созданном Кристианом Грубером. Вы также можете это проверить.

Надеюсь, поможет :)

person Kirill Boyarshinov    schedule 06.01.2015
comment
Почему в файле build.gradle есть два раздела repositories{}? - person IgorGanapolsky; 10.02.2015
comment
@IgorGanapolsky, один из репозиториев buildscript для плагина apt gradle, второй — для зависимостей проекта. Они отличаются от корневого, поэтому их приходится переопределять. - person Kirill Boyarshinov; 10.02.2015
comment
Довольно запутанно иметь несколько, что нарушает принцип DRY. - person IgorGanapolsky; 10.02.2015
comment
Оно делает. Самому не нравится. Основной причиной разделения репозиториев был случай, когда у вас есть несколько подпроектов (например, библиотеки, уровень данных). Учитывая их, полный список репозиториев в корневом файле излишен. Однако для примера лучше хранить их все в корневом файле. Исправлю это, когда у меня будет время. Спасибо за предложение! - person Kirill Boyarshinov; 10.02.2015

Для тех, кто ищет простой и понятный способ просто собрать проект Dagger 2 в Gradle/Android Studio, посетите https://github.com/bytehala/dagger2-gradle-quickstart

В сообщениях о фиксации я также перечисляю шаги по преобразованию полностью функционирующего проекта в Dagger 2.

Целевой аудиторией этого проекта являются все, у кого нет опыта внедрения зависимостей.

Никакая другая библиотека, кроме Butterknife, не используется.

ВНИМАНИЕ Целью этого примера проекта является простота, а не полнота. Были использованы только следующие функции:

  • @Модуль
  • @Составная часть
  • @Инжекты
  • @Предоставляет
  • @Синглтон

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

person lemuel    schedule 13.05.2015
comment
Я бы рекомендовал удалить все зависимости IntelliJ, такие как файлы .iml. - person MLProgrammer-CiM; 13.05.2015
comment
Действительно? Я не знал, что это нужно сделать. Я решил, что .gitignore, предоставленный AS, достаточно. LOL Я сделаю, как вы рекомендуете утром, я обещаю. Любые другие файлы, которые я должен удалить из git? - person lemuel; 13.05.2015
comment
Все остальное в порядке. Файлы .iml и папка .idea, как правило, имеют локальные пути, а также некоторые непослушные вещи с управлением версиями gradle, если вы используете подстановочные знаки: + номера версий. - person MLProgrammer-CiM; 13.05.2015

Пример CoffeeMaker без Android: https://github.com/yongjhih/dagger2-sample

Шаги:

git clone https://github.com/yongjhih/dagger2-sample
cd dagger2-sample
./gradlew execute
person Andrew Chen    schedule 19.03.2015
comment
Отличная находка, хотя я никогда не находил образец Coffee Maker просветляющим. - person MLProgrammer-CiM; 19.03.2015
comment
Вы должны где-то добавить произвольную инъекцию, без этого пример будет неполным. - person MLProgrammer-CiM; 19.03.2015
comment
Спасибо. Образец импортирован с официального сайта github.com/. google/dagger/tree/master/examples/simple/src/main/ . Вы можете увидеть инъекции в Thermosiphon и CoffeeMaker. - person Andrew Chen; 20.03.2015
comment
Лично я нашел пример Coffe Maker запутанным. В нем не хватает много информации, то есть: нет необходимости использовать модули в простых случаях (когда вы можете предоставить объекты класса самостоятельно, просто аннотируя конструктор класса аннотацией @Inject). - person Tomasz Dzieniak; 11.03.2016