gpt4 book ai didi

android - 使用 Dagger2 的多模块 android 应用程序,在功能模块中不使用 `kapt`

转载 作者:行者123 更新时间:2023-12-05 00:04:54 25 4
gpt4 key购买 nike

我有一个具有以下设置的 Android 应用程序:

2 个 gradle 模块:appfeature(刚刚开始模块化,这是许多功能模块中的第一个)

在特性模块 FeatureModule 中,它是一个 Dagger @Module 提供特性的依赖。

app 模块 AppComponent 中处理所有依赖项,引用 FeatureModule (@Component(modules = [ ...,FeatureModule::class]))

这工作正常。问题是我在模块的两个 build.gradles 中都需要这些行:

apply plugin: 'kotlin-kapt'
....
implementation 'com.google.dagger:dagger-android-support:2.22.1'
implementation 'com.google.dagger:dagger:2.22.1'
kapt 'com.google.dagger:dagger-compiler:2.22.1'
kapt 'com.google.dagger:dagger-android-processor:2.22.1'

据我所知,将 kapt 添加到所有功能模块会显着减慢构建速度(我在这方面可能是错误的)。所以我只想在功能模块的 build.gradle 中包含这些行:

implementation 'com.google.dagger:dagger-android-support:2.22.1'
implementation 'com.google.dagger:dagger:2.22.1'

这可能是一个不同的话题,但我还是要问。你认为我应该为功能模块(以及其他即将到来的功能模块)创建一个单独的 @Component 还是为它们创建一个单独的 Dagger @Module 就足够了?

实际上,我尝试创建一个@Component,但我只找到了有关@Component.Builder 设置的示例,并且我正在使用新的 @Component.Factory一个。

我考虑该组件的唯一原因是我可以为该功能提供不同的 @Scope,但我认为我现在不想这样做。你知道我这样做的任何其他原因吗?

提前致谢!

最佳答案

这似乎不可能,但我能够执行以下解决方法。

您应该将核心模块中的implementation替换为api。所以你的代码看起来像这样,

核心build.gradle:

apply plugin: 'kotlin-kapt'
....
api 'com.google.dagger:dagger:2.22.1'
kapt 'com.google.dagger:dagger-compiler:2.22.1'

特性build.gradle:

apply plugin: 'kotlin-kapt'
....
implementation project(':core')
kapt 'com.google.dagger:dagger-compiler:2.22.1'

关于android - 使用 Dagger2 的多模块 android 应用程序,在功能模块中不使用 `kapt`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61505753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com