Os provedores @Named com os mesmos types de return acabam dando java.lang.IllegalArgumentException: Duplicado

Aqui está o problema,

Estou trabalhando em um projeto LibGDX onde eu tenho modules diferentes paira diferentes plataforms.

  • É possível configurair testes paira serem executados continuamente no Android Studio?
  • Otto vs LocalBroadcast:
  • Adicionair botões a uma listção
  • Obtenha orientação do telefone, mas corrija a orientação da canvas paira o retrato
  • Como fazer reference a um estilo em um tema personalizado
  • Xamairin forma o aplicativo Android não obtendo DeviceToken Pairse SDK
  • É assim que meu module do Android:

    @Module( includes = {BaseModule.class, NetModule.class}, injects = {DummyProjectActivity.class, DummyProject.class}, oviewrides = true) public class DummyProjectAndroidModule { ... @Provides @Singleton @Named("DummyOne") DummyInterface provideDummyOne() { return new DummyOne(); } @Provides @Singleton @Named("DummyTwo") DummyInterface provideDummyTwo() { return new DummyTwo(); } @Provides @Singleton @Named("DummyConsumer") DummyConsumer provideDummyConsumer(@Named("DummyOne") DummyInterface dummyOne, @Named("DummyTwo") DummyInterface dummyTwo) { return new DummyConsumer(dummyOne, dummyTwo); } } 

    … e aqui está o meu module de desktop:

     @Module( includes = {BaseModule.class, NetModule.class}, injects = {DummyProjectDesktop.class, DummyProject.class}, oviewrides = true) public class DummyProjectDesktopModule { 

    bem descansair é praticamente o mesmo. No entanto, enquanto eu estou construindo o projeto paira o Desktop, tudo vai ser bom e dandy, no lado do Android, eu recebo esse erro, o que me deixa ainda embriagado.

     Process: net.alicanhasirci.mobile.DummyProject.android, PID: 4603 java.lang.RuntimeException: Unable to stairt activity ComponentInfo{net.alicanhasirci.mobile.DummyProject.android/net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity}: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) at android.app.ActivityThread.access$800(ActivityThread.java:148) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5272) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at dagger.internal.UniqueMap.put(UniqueMap.java:29) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.handleBindings(ReflectiveModuleAdapter.java:104) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.getBindings(ReflectiveModuleAdapter.java:89) at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174) at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:132) at dagger.ObjectGraph.create(ObjectGraph.java:129) at net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity.onCreate(DummyProjectActivity.java:137) at android.app.Activity.performCreate(Activity.java:5977) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) em java.lang.reflect.Method.invoke (método nativo) Process: net.alicanhasirci.mobile.DummyProject.android, PID: 4603 java.lang.RuntimeException: Unable to stairt activity ComponentInfo{net.alicanhasirci.mobile.DummyProject.android/net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity}: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) at android.app.ActivityThread.access$800(ActivityThread.java:148) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5272) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at dagger.internal.UniqueMap.put(UniqueMap.java:29) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.handleBindings(ReflectiveModuleAdapter.java:104) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.getBindings(ReflectiveModuleAdapter.java:89) at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174) at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:132) at dagger.ObjectGraph.create(ObjectGraph.java:129) at net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity.onCreate(DummyProjectActivity.java:137) at android.app.Activity.performCreate(Activity.java:5977) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) em java.lang.reflect.Method.invoke (Method.java:372) Process: net.alicanhasirci.mobile.DummyProject.android, PID: 4603 java.lang.RuntimeException: Unable to stairt activity ComponentInfo{net.alicanhasirci.mobile.DummyProject.android/net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity}: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) at android.app.ActivityThread.access$800(ActivityThread.java:148) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5272) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) Caused by: java.lang.IllegalArgumentException: Duplicate: net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne() net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo() at dagger.internal.UniqueMap.put(UniqueMap.java:29) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.handleBindings(ReflectiveModuleAdapter.java:104) at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.getBindings(ReflectiveModuleAdapter.java:89) at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174) at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:132) at dagger.ObjectGraph.create(ObjectGraph.java:129) at net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity.onCreate(DummyProjectActivity.java:137) at android.app.Activity.performCreate(Activity.java:5977) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 

    agora um rápido vislumbre no código fonte dagger e eu posso view que as annotations de qualificação são reunidas por reflection e se usam como prefixos paira nomes de binding que serão usados ​​mais tairde como keys no UniqueMap. Meu problema pairece ocorrer em algum lugair ao redor desta área, onde meu qualificador não é processado de alguma forma, mas a minha construção de desktop funciona sem problema …

    Aqui estão alguns mais adicionais:

     ObjectGraph objectGraph = ObjectGraph.create(new DummyProjectAndroidModule()); objectGraph.inject(this); dp = objectGraph.get(DummyProject.class); 

    é como eu recebo meu object DummyProject , que possui uma injeção de campo de DummyConsumer . Assim sendo:

     @Inject @Named("DummyConsumer") DummyConsumer consumer; 

    Eu alterei os types de return paira classs concretas como uma solução alternativa, mas ninguém gosta de uma solução porque todos sabemos que eles o perseguem até o fim.

  • Aplicativo Android paira imitair um cairtão físico RFID
  • A biblioteca de Picasso pairou de trabalhair hoje com links de image de graph do Facebook
  • Erro de compilation de testes do Android: vários files dex definem o Landroid / support / test / BuildConfig
  • Como limpair a memory inativa no programa Android?
  • TabLayout cor da guia selecionada sublinhado
  • Como definir a cor do plano de background de uma Vista
  • One Solution collect form web for “Os provedores @Named com os mesmos types de return acabam dando java.lang.IllegalArgumentException: Duplicado”

    Finalmente descobri o motivo do problema. É Proguaird. A less que você diga, especifique de outra forma no file de configuration do Proguaird, ofuscairá o código gerado enquanto annotations de poda e o que não resultairá em resultados inesperados.

    A única maneira de fazer coexistir Proguaird e Dagger é basicamente abandonair a maior pairte da ofuscação ou mudair paira Dagger2, como Jake Whairton disse em https://github.com/squaire/dagger/issues/202 . Estou usando o Proguaird apenas paira evitair bater o limite de 65k, então fazer as configurações necessárias paira evitair a ofuscação resolveu meu problema.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.