リリースとAPI互換性ガイド
INFO
このページでは、Koinの主要なリリースごとに包括的な概要を提供し、フレームワークの進化を詳しく説明することで、アップグレードの計画と互換性の維持に役立てることができます。
各バージョンについて、このドキュメントは以下のセクションで構成されています。
Kotlin
: リリースで使用されるKotlinのバージョンを指定し、言語の互換性を明確にし、最新のKotlin機能を利用できるようにします。New
: 機能性と開発者エクスペリエンスを向上させるために新しく導入された機能と改善点を強調します。Experimental
: 実験的としてマークされたAPIと機能を一覧表示します。これらは現在活発に開発中であり、コミュニティからのフィードバックに基づいて変更される可能性があります。Deprecated
: 非推奨とマークされたAPIと機能を特定し、推奨される代替案に関するガイダンスとともに、将来の削除に備えるのに役立ちます。Breaking
: 後方互換性を損なう可能性のある変更点を詳しく説明し、移行中に必要な調整を把握できるようにします。
この構造化されたアプローチは、各リリースにおける段階的な変更を明確にするだけでなく、Koinプロジェクトにおける透明性、安定性、継続的な改善への私たちのコミットメントを強化します。
4.0.3
NOTE
Kotlin 2.0.21
を使用
使用されているすべてのライブラリバージョンは libs.versions.toml にあります。
New 🎉
koin-core
KoinPlatformTools.generateId()
- Kotlinの新しいバージョンにより、新しいkotlin.uuid.uuid
APIの恩恵を受けることができます。KoinPlatformTools.generateId()
Koin関数は、この新しいAPIを使用してプラットフォーム間で実際のUUIDを生成するようになりました。
koin-viewmodel
- Koin 4.0では、Google/Jetbrains KMP APIを共通化する新しいViewModel DSL & APIが導入されました。コードベース全体での重複を避けるため、ViewModel APIは現在
koin-core-viewmodel
およびkoin-core-viewmodel-navigation
プロジェクトに配置されています。 - ViewModel DSLのインポートは
org.koin.core.module.dsl.*
です。
指定されたプロジェクトにおける以下のAPIは、現在安定版です。
koin-core-coroutines
- すべてのAPIが現在安定版です
- all
lazyModules
awaitAllStartJobs
,onKoinStarted
,isAllStartedJobsDone
waitAllStartJobs
,runOnKoinStarted
KoinApplication.coroutinesEngine
Module.includes(lazy)
lazyModule()
KoinPlatformCoroutinesTools
Experimental 🚧
koin-test
ParameterTypeInjection
-Verify
APIのための動的なパラメータインジェクションを設計するのに役立つ新しいAPI
koin-androidx-startup
koin-androidx-startup
-AndroidX Startup
を使用してKoinを開始する新しい機能で、androidx.startup.Initializer
APIを使用します。koin-androidx-startup
内のすべてのAPIは実験的です。
koin-compose
rememberKoinModules
- @Composableコンポーネントに基づいてKoinモジュールをロード/アンロードrememberKoinScope
- @Composableコンポーネントに基づいてKoinスコープをロード/アンロードKoinScope
- すべての下層のComposable子孫のためにKoinスコープをロード
Deprecation ⚠️
以下のAPIは非推奨となり、もはや使用すべきではありません。
koin-test
checkModules
のすべてのAPI。Verify
APIに移行してください。
koin-android
koin-core
の新しい一元化されたDSLを優先するViewModel DSL
koin-compose-viewmodel
koin-core
の新しい一元化されたDSLを優先するViewModel DSL- 関数
koinNavViewModel
は非推奨となり、koinViewModel
が推奨されます。
Breaking 💥
以下のAPIは、前回のマイルストーンでの非推奨化により削除されました。
NOTE
@KoinReflectAPI
でアノテーションされたすべてのAPIは削除されました。
koin-core
ApplicationAlreadyStartedException
はKoinApplicationAlreadyStartedException
に名称変更されました。KoinScopeComponent.closeScope()
は内部的に使用されなくなったため削除されました。- 内部の
ResolutionContext
がInstanceContext
を置き換えるために移動されました。 KoinPlatformTimeTools
、Timer
、measureDuration
は削除され、代わりにKotlin Time APIを使用するようになりました。KoinContextHandler
はGlobalContext
を優先して削除されました。
koin-android
- すべての状態ViewModel APIはエラーレベルで非推奨です。
stateViewModel()
、getStateViewModel()
は、代わりにviewModel()
を使用してください。getSharedStateViewModel()
、sharedStateViewModel()
は、代わりにviewModel()
または共有インスタンスにはactivityViewModel()
を使用してください。
- 関数
fun Fragment.createScope()
は削除されました。 - ViewModelファクトリに関するすべてのAPI(主に内部的なもの)は、新しい内部構造のために再構築されました。
koin-compose
- 古いCompose API関数はエラーレベルで非推奨です。
- 関数
inject()
はkoinInject()
を優先して削除されました。 - 関数
getViewModel()
はkoinViewModel()
を優先して削除されました。 - 関数
rememberKoinInject()
はkoinInject()
に移動されました。
- 関数
- 内部的に使用されなくなったため、
StableParametersDefinition
は削除されました。 - すべてのLazy ViewModel API(古い
viewModel()
)は削除されました。 - 内部的に使用されなくなったため、
rememberStableParametersDefinition()
は削除されました。
3.5.6
NOTE
Kotlin 1.9.22
を使用
使用されているすべてのライブラリバージョンは libs.versions.toml にあります。
New 🎉
koin-core
KoinContext
に以下の機能が追加されました。fun loadKoinModules(module: Module, createEagerInstances: Boolean = false)
fun loadKoinModules(modules: List<Module>, createEagerInstances: Boolean = false)
koinApplication()
関数は現在、複数の形式で使用可能です。koinApplication(createEagerInstances: Boolean = true, appDeclaration: KoinAppDeclaration? = null)
koinApplication(appDeclaration: KoinAppDeclaration?)
koinApplication(createEagerInstances: Boolean)
- 宣言スタイルを開くのに役立つ
KoinAppDeclaration
- JS向けAPI Timeを使用するための
KoinPlatformTimeTools
- iOS - Touchlab Lockable APIを使用するための
synchronized
API
koin-androidx-compose
- Android環境から現在のKoinコンテキストにバインドするための新しい
KoinAndroidContext
koin-compose
- 現在のデフォルトコンテキストで新しい
KoinContext
コンテキストを起動
koin-ktor
- 現在、Ktorインスタンスに隔離されたコンテキストを使用します(デフォルトコンテキストの代わりに
Application.getKoin()
を使用)。 - Koinプラグインに新しいモニタリング機能が導入されました。
- Ktorリクエストにスコープインスタンスを許可する
RequestScope
Experimental 🚧
koin-android
ViewModelScope
はViewModelスコープ向けの実験的なAPIを導入します。
koin-core-coroutines
- バックグラウンドでモジュールをロードするための新しいAPIを導入
Deprecation ⚠️
koin-android
getLazyViewModelForClass()
APIは非常に複雑であり、デフォルトのグローバルコンテキストを呼び出します。Android/Fragment APIにこだわることをお勧めします。resolveViewModelCompat()
はresolveViewModel()
を優先して非推奨となりました。
koin-compose
- 関数
get()
とinject()
はkoinInject()
を優先して非推奨となりました。 - 関数
getViewModel()
はkoinViewModel()
を優先して非推奨となりました。 - 関数
rememberKoinInject()
はkoinInject()
を優先して非推奨となりました。
Breaking 💥
koin-core
Koin.loadModules(modules: List<Module>, allowOverride: Boolean = true, createEagerInstances : Boolean = false)
はKoin.loadModules(modules: List<Module>, allowOverride: Boolean = true)
を置き換えます。- プロパティ
KoinExtension.koin
は関数KoinExtension.onRegister()
に移動されました。 - iOS -
internal fun globalContextByMemoryModel(): KoinContext
はMutableGlobalContext
を使用するようになりました。
koin-compose
- 関数
KoinApplication(moduleList: () -> List<Module>, content: @Composable () -> Unit)
はKoinContext
およびKoinAndroidContext
を優先して削除されました。
3.4.3
NOTE
Kotlin 1.8.21
を使用
New 🎉
koin-core
- Koinのエクステンションエンジンを記述するのに役立つ新しいExtensionManager API -
ExtensionManager
+KoinExtension
parameterArrayOf
とparameterSetOf
を用いたParameters APIの更新
koin-test
Verification
API - モジュールに対してverify
を実行するのに役立ちます。
koin-android
- ViewModelインジェクションのための内部実装
AndroidScopeComponent.onCloseScope()
関数コールバックを追加
koin-android-test
Verification
API - モジュールに対してandroidVerify()
を実行するのに役立ちます。
koin-androidx-compose
- 新しい
get()
- 新しい
getViewModel()
- 新しいスコープ
KoinActivityScope
、KoinFragmentScope
koin-androidx-compose-navigation
- ナビゲーション用の新しいモジュール
- 新しい
koinNavViewModel()
koin-compose
- Compose向けの新しいマルチプラットフォームAPI
koinInject
,rememberKoinInject
KoinApplication
Experimental 🚧
koin-compose
- Compose向けの新しい実験的なマルチプラットフォームAPI
rememberKoinModules
KoinScope
,rememberKoinScope
Deprecation ⚠️
koin-compose
get()
関数は、Lazy関数を避けつつinject()
の使用を置き換えるものgetViewModel()
関数は、Lazy関数を避けつつviewModel()
関数を置き換えるもの
Breaking 💥
koin-android
LifecycleScopeDelegate
は削除されました。
koin-androidx-compose
getStateViewModel
はkoinViewModel
を優先して削除されました。