Я работаю над мгновенным приложением в течение нескольких дней.Я еще не скомпилировал его из-за проблемы с Кинжалом.
Проект разделен на base
, export
, preview
как функции.
In export
module
@ExportScope
@Component(
modules = [DrawExportModule::class],
dependencies = [AppComponent::class])
interface DrawExportComponent: AndroidInjector<LiveDrawingExportActivity> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<LiveDrawingExportActivity>(){
abstract fun plus(component: AppComponent): Builder
}
}
AppComponent.kt
@Singleton
@Component(modules = [
AndroidInjectionModule::class,
AppModule::class,
ActivityBindingModule::class,
ServiceBindingModule::class])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(context: Context): Builder
fun build(): AppComponent
}
fun inject(app: LiveMessageApplication)
}
AppModule.kt
@Module(includes = [(DataModule::class)])
class AppModule {
@Singleton
@Provides
fun provideStateManager(): StateManager {
return StateManager.getInstance()
}
}
Журнал ошибок компиляции
/Users/*/features/export/build/tmp/kapt3/stubs/debug/*/ui/draw/di/DrawExportComponent.java:8:
error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] *.ui.StateManager cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract interface DrawExportComponent extends dagger.android.AndroidInjector<com.ctech.livemessage.ui.draw.LiveDrawingExportActivity> {
^
*.ui.StateManager is injected at
*.LiveDrawingExportActivity.stateManager
*.LiveDrawingExportActivity is injected at
dagger.android.AndroidInjector.inject(T)
Мне кажется компонент зависимостине работает в этом случае.Я понятия не имею, как двигаться вперед.
Дополнительная информация base / build.gradle
apply plugin: 'com.android.feature'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion deps.build.compileSdkVersion
baseFeature = true
defaultConfig {
minSdkVersion deps.build.minSdkVersion
targetSdkVersion deps.build.targetSdkVersion
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
dependencies {
application project(":installed")
feature project(":features:export")
feature project(":features:preview")
}
export / build.gradle
apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion deps.build.compileSdkVersion
defaultConfig {
minSdkVersion deps.build.minSdkVersion
targetSdkVersion deps.build.targetSdkVersion
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
debuggable true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), '../../proguard.pro'
signingConfig signingConfigs.debug
}
}
sourceSets {
main {
jniLibs.srcDirs 'libs'
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
dependencies {
implementation project(':features:base')
kapt deps.dagger.compiler
kapt deps.dagger.androidCompiler
}