Я борюсь с настройкой Dagger (1.0.1) в существующем приложении. Он был настроен на использование ProGuard, но я отключил его для этого теста с помощью -dontobfuscate
.
Когда я включаю dagger-compiler, он может успешно сгенерировать точечный файл с графом зависимостей, но когда я удаляю компилятор и создаю приложение в режиме выпуска, он падает во время запуска, жалуясь, что не может создать граф объектов.
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.corp.myapp/com.corp.myapp.ui.activity.MainActivity}:
java.lang.IllegalStateException: Errors creating object graph:
No injectable members on com.corp.myapp.core.services.ConnectionMonitor. Do
you want to add an injectable constructor? required by
com.corp.myapp.core.services.ConnectionMonitor
com.corp.myapp.ui.activity.MyAppBaseActivity.connectionManager
No injectable members on com.corp.myapp.ui.crouton.CroutonManager. Do you want
to add an injectable constructor? required by
com.corp.myapp.ui.crouton.CroutonManager
com.corp.myapp.ui.activity.MyAppBaseActivity.croutonManager
No injectable members on com.corp.core.assembler.ResourceAssembler. Do you want
to add an injectable constructor? required by
com.corp.core.assembler.ResourceAssembler
com.corp.myapp.ui.activity.MyAppBaseActivity.resourceAssembler
Я вижу MyAppBaseActivity
и его зависимости с CroutonManager
или ConnectionMonitor
, отображаемыми в сгенерированном точечном файле, поэтому согласно этому комментарию Я ожидал, что это сработает. Насколько я знаю, если что-то было не так, это должно быть обнаружено сборкой с поддержкой компилятора, которую я использовал для создания файла точек.
ОБНОВЛЕНИЕ:
Я ранее заявлял, что
В режиме отладки никогда не происходит сбой
но это не совсем так после дальнейшего тестирования: в режиме Debug он не дает сбоев, потому что ProGuard отключен, тогда как в режиме Release он включен по умолчанию. Если я соберу приложение в режиме выпуска, но пропущу ProGuard, я также не получу ошибок и приложение успешно запустится. Так что проблема определенно связана с моей конфигурацией ProGuard.