我找不到此问题的解决方案。
我已经可以使用多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/