问题标签 [koin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1084 浏览

unit-testing - 由于 mockito,Android 仪器测试失败

嗨,我收到以下错误

我已经手动打开了这些课程..

我使用的依赖项

0 投票
1 回答
2727 浏览

dependency-injection - 面临将 sharedPreferences 和 sharedPrefrencesEditor 添加到 Koin 模块的问题

我最近了解了 Koin。我试图将我当前的项目从 Dagger 迁移到 Koin。这样做时,我遇到了在活动中注入sharedPreferences 和 sharedPreferences 编辑器的问题。

以下是我在Dagger中用于注入 sharedPreferences 和 sharedPreferences 编辑器的代码 ->

我试图像这样将上述代码转换为Koin ->

我也尝试以这种方式实现它->

现在我像这样在我的活动中注入依赖项->

但是一旦我启动我的应用程序并尝试使用它们,我就无法读取或写入任何偏好设置。

我对代码有什么问题感到有些困惑。请帮我解决这个问题。

0 投票
2 回答
1667 浏览

kotlin - 如何使用 Koin 依赖注入 (Kotlin) 检索与给定类型匹配的所有实例

如何使用 Koin DI 实现以下目标:

在我想要注入所有验证器的类中,我使用以下内容:

期望IValidator自动注入所有不同的接口实现。

我知道这实际上在 Kodein 中得到支持,您只需执行以下操作:

val validators: List<IValidator> by kodein.allInstances()

很想知道这在 Koin 中是否可行。

谢谢!

0 投票
0 回答
511 浏览

android - 多模块清洁架构项目:使 Koin 设置反映正确的 gradle 依赖关系

我正在开发一个由以下模块组成的多模块项目:域、数据库、服务和应用程序。

依赖关系如下:

  • 域没有
  • 数据库依赖于域
  • 服务依赖于数据库和域
  • app 应该只依赖域和服务,但现在还依赖于数据库。

应用程序、服务和数据库每个都有一个 modules.kt,其中包含模块提供的所有内容(Koin)。数据库提供存储库的实现,服务提供用例,应用提供视图模型,...

app 必须依赖数据库模块的原因是,当我在我的 app 模块中启动 Koin 时,我可以引用数据库模块。

我不希望我的应用程序模块仅仅为此而依赖我的数据库模块。然而,我仍然希望每一层都有自己的模块文件。有没有办法声明我的 Koin 服务模块文件依赖于该数据库模块文件?这样我的 Koin 设置反映了我的 gradle 设置。

0 投票
1 回答
81 浏览

android - 注入超类型dagger2

是否可以在 Dagger 2 中注入超类型?

如果我有这样的财产

以下提供工作吗?

其实我应该改写这个问题。它不起作用,我收到一个错误,需要注入确切的钱包

我们有什么解决方法吗?. koin 是否提供一些这样的功能?

0 投票
1 回答
1265 浏览

android - Gradle 依赖不与依赖模块共享

语境

我的项目中有两个模块:

  • Java/Kotlin 模块common
  • Android/Kotlin 模块app

common依赖于Koin,这是一个用于依赖注入的 Kotlin 库:

使用示例:

app不依赖 Koin 库,因为我不需要在 Android 代码中注入任何东西,所有注入都在公共代码中(演示者、拦截器等)。

app取决于common

使用示例:


问题

我可以编译common,我可以在 中运行单元测试common,但是当我尝试编译时app出现此错误:

以下类的超类型无法解析。请确保您在类路径中有所需的依赖项:class xxx.common.presenter.MyPresenter,未解析的超类型:org.koin.standalone.KoinComponent

当我跑./gradlew :app:dependencies

依赖项在runtime配置中,但在配置中缺失compile


到目前为止我已经尝试过:

显然我不想在其中声明 Koin 依赖项,app所以我尝试了几件事:

更改 Koin 依赖项api

不工作- 我得到与implementation.

更改项目依赖配置:

不工作- 我不确定这个,但我希望它会获得配置中的依赖commoncompile

更改 Koin 依赖项compile

在职的!依赖项出现在 中debugCompileClasspath,我可以运行app.


问题

现在我很困惑:

  • 由于app不直接使用 Koin,我虽然不需要依赖。为什么会这样?是因为是静态类型MyPresenterKoinComponent
  • 我认为api与 deprecated 相同compile。似乎没有。
  • 除了使用 deprecated 之外,还有其他方法compile吗?
0 投票
0 回答
1307 浏览

android - 如何一起使用 Koin sharedViewModel() 和 NavigationComponent navArgs()

我正在尝试注入一个sharedViewModelusingarguments作为key.

这是我得到的错误

我猜在注入arguments时是空的sharedViewModel,但我不确定。

我如何trackId在从?keyparameterarguments

EDIT1:我尝试使用直接arguments调用并且它有效

所以我猜这个navArgs()电话有问题。

EDIT2:正如Commonware所建议的,EDIT1它并没有真正起作用,它只是将 a 传递null key给该方法。我对有办法使用这种方法失去了希望。

0 投票
1 回答
2453 浏览

android - 带有私有参数的 Koin 单例注入构造函数

你好我刚学 Koin,这个 Dagger2 类在 Koin 2.0 中如何提供?

我试过这个:

但是AppExecutors.MainThreadExecutor()是私人的。公开它是唯一的解决方案吗?

0 投票
1 回答
1405 浏览

android - StandAloneContext Koin 实例为空

当我将 Koin 添加到项目中时,我不断遇到以下错误。 StandAloneContext Koin instance is null

implementation 'org.koin:koin-android:1.0.2'

模块.kt

应用程序.kt

0 投票
2 回答
2823 浏览

junit - 如何使用 Koin 注入 @BeforeClass 静态方法?

我有一个集成测试,需要在运行任何后续测试之前调用 REST 服务以获取访问令牌一次。在将 Koin 添加到我的项目之前,我在一个带有@BeforeClass如下注释的静态方法中完成了这项工作:

AuthRepository 和 PersonRepository 有额外的依赖关系,到目前为止,这些依赖关系是在它们的构造函数中实例化的。现在,我想使用 Koin 通过注入存储库来解决这些依赖关系:

当我尝试inject在伴生对象中使用时,编译器会报错:

@BeforeClass还有另一种方法可以使用 Koin 以这样的静态方法注入我的类吗?