Приложение Android аварийно завершает работу при выпуске сборки с использованием Proguard и Dagger

Я новичок в использовании приложений Proguard и Dagger для Android, поэтому я был бы очень признателен, если бы кто-нибудь мог дать мне несколько советов.

В приложение были внедрены Proguard и Dagger. Когда приложение установлено в режиме отладки (т. е. загружено из Eclipse), проблем с запуском приложения не возникает. Однако, когда я запускаю выпускную сборку приложения, происходит сбой со следующей трассировкой:

No injectable members on com.example.test.d. Do you want to add an injectable constructor? required by com.example.test.d com.example.test.SampleActivity.a
No injectable members on com.b.a.b. Do you want to add an injectable constructor? required by com.b.a.b com.example.test.SampleActivity.b
    at dagger.internal.h.a(ThrowingErrorHandler.java:34)
    at dagger.internal.Linker.a(Linker.java:136)
    at dagger.d.a(ObjectGraph.java:264)
    at dagger.d.a(ObjectGraph.java:238)
    at com.example.test.SampleApplication.a(SampleApplication.java:24)

Я следовал рекомендациям из: https://plus.google.com/108620120050432268974/posts/AAjvwg3Hmgg от реализация следующего в proguard-project.txt:

-keep class * extends dagger.internal.Binding
-keep class * extends dagger.internal.ModuleAdapter
-keep class * extends dagger.internal.StaticInjection

но, похоже, это не решает проблему. Предложения? Заранее спасибо.


person ShannonS    schedule 28.02.2013    source источник


Ответы (3)


Proguard и dagger (предварительная) компиляция, похоже, плохо работают вместе в релизных сборках. См. https://plus.google.com/117210567825404150882/posts/HGjnJJHbfMj.

«Проблема» заключается в том, что не запутанные имена пакетов будут скомпилированы в классы.

person Jörg    schedule 21.03.2013

Вы добавили это в файл конфигурации proguard?

-keepattributes *Annotation*
person hungr    schedule 14.03.2013

Взгляните на https://stackoverflow.com/a/18109765/654026 на всякий случай, если это вам поможет. Там вы увидите некоторые подробности о конфигурации proguard для моего приложения, которые позволили мне пропустить сбои приложения при использовании Dagger.

person David Santiago Turiño    schedule 09.08.2013