我找不到此问题的解决方案。

我已经可以使用多dex应用程序了,但是由于我添加了Dagger 2.16,所以它不起作用。

这是我的应用程序类:

class App : MultiDexApplication(), HasActivityInjector {

    @Inject
    lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>

    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
        AppInjector.init(this)
    }

    override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector
}


启动时出错

Caused by: java.lang.RuntimeException: androidx.multidex.MultiDexApplication does not implement dagger.android.HasActivityInjector

最佳答案

检查清单(AndroidManifest.xml),并确保<application>标记列出您的应用程序而不是MultiDexApplication,尤其是如果在调用AppInjector之前没有看到Timber日志的情况。



请注意,您的错误消息指出:


  造成原因:java.lang.RuntimeException:androidx.multidex.MultiDexApplication没有实现dagger.android.HasActivityInjector


...这表明getApplication()返回的类的类型为MultiDexApplication,而不是App。一般而言,Android建议保持Application子类轻便。 docs建议子类是可选的,并且如果您不需要自定义Application子类,则DaggerApplication和MultiDexApplication均旨在代替自定义Application子类起作用。这样一来,您的清单可能就不会指向您的App类。

关于android - AndroidX Dagger2 MultiDexApplication:未实现HasActivityInjector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52481710/

10-10 18:13