Проблема с модулем и компонентом в разных библиотекахAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с модулем и компонентом в разных библиотеках

Сообщение Anonymous »

Я хочу понять, как это работает.
У меня есть приложение с тремя библиотеками:
:main
:module1
:module2
:di_api
Library:main:
build.gradle.kts:

Код: Выделить всё

dependencies {
implementationProjects(
":module2",
CommonProjectLibraries.DiApi
)
implementationList(
DependsLibraries.daggerLibs,
)

ksps(DependsLibraries.moshiKsp, DependsLibraries.daggerKsp)
}
Основной класс:

Код: Выделить всё

class MainClass {

fun get() {
DaggerModule2Component
.builder()
.build()
}
}
Библиотека: di_api:
build.gradle.kts:

Код: Выделить всё

dependencies {
implementationList(
DependsLibraries.daggerLibs,
)

ksps(DependsLibraries.moshiKsp, DependsLibraries.daggerKsp)
}
PerModule.kt:

Код: Выделить всё

@Scope
@Retention(AnnotationRetention.SOURCE)
annotation class PerModule
Libray:module1:
build.gradle.kts:

Код: Выделить всё

dependencies {
implementationProjects(
CommonProjectLibraries.DiApi
)
implementationList(
DependsLibraries.daggerLibs,
)

ksps(DependsLibraries.moshiKsp, DependsLibraries.daggerKsp)
}
TestClass.kt:

Код: Выделить всё

class TestClass {}
NeedTestClass.kt:

Код: Выделить всё

class NeedTestClass(val test: TestClass) {}
Module1Module.kt:

Код: Выделить всё

@Module
class Module1Module {

@Provides
@PerModule
fun provideTestClass(): TestClass {
return TestClass()
}

@Provides
fun provideNeedTestClass(test: TestClass): NeedTestClass {
return NeedTestClass(test)
}

}
Библиотека:module2:
build.gradle.kts:

Код: Выделить всё

dependencies {
implementationProjects(
":enva:module1",
CommonProjectLibraries.DiApi
)
implementationList(
DependsLibraries.daggerLibs,
)

ksps(DependsLibraries.moshiKsp, DependsLibraries.daggerKsp)
}
Module2Component.kt:

Код: Выделить всё

@Component(
modules = [
Module1Module::class
]
)
@PerModule
interface Module2Component {}
И после компиляции у меня следующая ошибка:
[ksp] java.lang.IllegalStateException: ожидалось, что com.example.module1.di.Module1Module.provideTestClass() будет иметь аннотацию области для mobile.team.commoncode.di_api.PerModule, но обнаружено: []
Когда я перемещаю Module1Module.kt в :module2, проблема устраняется. Но я не понимаю, почему не работает крестик, когда модуль в одном модуле, а компонент в другом модуле.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -libraries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»