我正在尝试创建我的应用程序组件,但Dagger不会生成我的应用程序组件.这是MyApplication类
class MyApplication : Application() {
companion object {
@JvmStatic lateinit var graph: ApplicationComponent
}
@Inject
lateinit var locationManager : LocationManager
override fun onCreate() {
super.onCreate()
graph = DaggerApplicationComponent.builder().appModule(AppModule(this)).build()
graph.inject(this)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的AppComponent类
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface ApplicationComponent {
fun inject(application: MyApplication)
}
Run Code Online (Sandbox Code Playgroud)
这是我在github上的项目
这是错误日志
Error:(7, 48) Unresolved reference: DaggerApplicationComponent
Error:(28, 17) Unresolved reference: DaggerApplicationComponent
Error:Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
Information:BUILD FAILED
Information:Total time: 21.184 secs
Error:e: .../MyApplication.kt: (7, 48): Unresolved reference: DaggerApplicationComponent
e: Unresolved reference: DaggerApplicationComponent
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Information:4 errors
Information:0 warnings
Information:See complete output in console
Run Code Online (Sandbox Code Playgroud)
Pau*_*and 46
我的解决方案是添加
apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)
并删除
kapt {
generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*jan 28
这有助于我解决这个问题
将其添加到顶部 build.gradle
apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)
里面的android
标签添加
kapt {
generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)
然后更换
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
Run Code Online (Sandbox Code Playgroud)
至
kapt 'com.google.dagger:dagger-compiler:2.11'
Run Code Online (Sandbox Code Playgroud)
现在Rebuild
的项目由
Build -> Rebuild project
Run Code Online (Sandbox Code Playgroud)
And*_*dEx 27
请尝试启用存根生成,这可能是在构建过程的此阶段看不到类的原因.在您的build.gradle
文件中,顶级:
kapt {
generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)
我已经下载了你的Github项目.感谢分享!
您的问题的答案非常简单:
Build -> Rebuild project
Run Code Online (Sandbox Code Playgroud)
Dagger依赖项文件将被重新创建,app之后会出现任何问题.
我已经用Android Studio 2.1.2版本检查了这个.有用
你应该删除
kapt {
generateStubs = true}
Run Code Online (Sandbox Code Playgroud)
并添加到应用程序 gradle 文件的顶部
apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)
然后 Dagger 会处理剩下的 :)
请尝试将此添加到您的build.gradle
android {
dexOptions {
incremental false
}
Run Code Online (Sandbox Code Playgroud)
编辑:显然一年后,如果您不应用kotlin-kapt
插件,就会发生这种情况。还要确保您使用kapt
而不是annotationProcessor
.
归档时间: |
|
查看次数: |
20049 次 |
最近记录: |