Могу ли я использовать Guice на Android? - PullRequest
0 голосов
/ 18 апреля 2020

Guice совместим с android? Я спрашиваю, потому что в новом sh новом проекте я получаю странную ошибку при создании инжектора, см. Ниже:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}:   
[...]  
com.google.common.util.concurrent.UncheckedExecutionException: 
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Unable to load cache item  
[...]  
Caused by: java.lang.UnsupportedOperationException: can't load this type of class file
        at java.lang.ClassLoader.defineClass(ClassLoader.java:591)  
[...]

Вот фрагмент кода, который дает сбой (внутри моей MainActivity):

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        Guice.createInjector(MyModule()) // The exception happens here

        fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
        }
    }

Вот мой модуль:

public class MyModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(DummyInterface.class).to.(DummyImplementation.class);
   }

Всякий раз, когда я использую оператор toInstance() intead of to(), приложение работает нормально, что заставляет меня думать, что возможности отражения в стиле guice не совместимы с Android.
Это правильное предположение или я что-то не так делаю? Потому что я никогда не видел, чтобы Guice нельзя было использовать на Android.

...