Skip to content

変更履歴

[3.3.0] - 2025年7月22日

  • 新機能: アプリがバックグラウンドにある間、AndroidでMemoryCache.maxSizeを制限する新しいAPIを導入しました。
    • ImageLoader.Builder.memoryCacheMaxSizePercentWhileInBackgroundが設定されている場合、アプリがバックグラウンドにある間、ImageLoaderのメモリキャッシュはその最大サイズの一定の割合に制限されます。この設定は現在、デフォルトで無効になっています。
    • アプリがバックグラウンドにあるときに、メモリキャッシュから画像がトリミングされ、制限された最大サイズに達します。ただし、最近トリミングされた画像へのメモリキャッシュの弱参照(weak references)は影響を受けません。これは、画像が現在他の場所で参照されている場合(例: AsyncImageImageViewなど)、メモリキャッシュに引き続き存在することを意味します。
    • このAPIは、バックグラウンドでのメモリ使用量を削減し、アプリが強制終了されるのを防ぎ、ユーザーのデバイスのメモリ負荷を軽減するのに役立ちます。
  • 新機能: SvgDecoderSvg.Parser引数を追加しました。
    • これにより、デフォルトのSVGパーサーがニーズに合わない場合、カスタムのSVGパーサーを使用できるようになります。
  • SvgDecoderdensity引数を追加し、カスタムの密度乗数を指定できるようにしました。
  • Uri.Builderを追加し、Uriのコピーと変更をサポートしました。
  • ImageLoader.Builder.mainCoroutineContextを追加し、テストでCoilのDispatchers.main.immediateの使用をオーバーライドできるようにしました。
  • CrossfadePainter.intrinsicSizeが、アニメーションの最後にstart画像が参照解除されたときに変更される問題を修正しました。これはCrossfadeDrawableの動作と一致します。
  • ImageLoaders.executeBlockingがJavaからアクセスできない問題を修正しました。
  • coil-network-ktor3kotlinx.ioのOkio相互運用モジュールを使用するようにしました。
  • kotlinx-datetime0.7.1に更新しました。
    • このリリースには、coil-network-cache-controlモジュールのみに影響するバイナリ互換性のない変更が含まれています。詳細についてはこちらを参照してください。
  • Kotlinを2.2.0に更新しました。
  • Composeを1.8.2に更新しました。
  • Okioを3.15.0に更新しました。
  • Skikoを0.9.4.2に更新しました。

[3.2.0] - 2025年5月13日

3.1.0からの変更点:

  • 重要: coil-composecoil-compose-coreは、Compose 1.8.0がJava 11のバイトコードを要求するため、Java 11のバイトコードを必要とするようになりました。有効にする方法についてはこちらを参照してください。
  • AsyncImagePreviewHandlerの関数型コンストラクタが、AsyncImagePainter.State.LoadingではなくAsyncImagePainter.State.Successを返すように変更しました。
  • ConstraintsSizeResolver#size()におけるキャンセルを修正しました。
  • R8でビルドする際のPlatformContextの欠落に関する警告を修正しました。
  • デフォルトのFakeImageLoaderEngineのレスポンスが返されたときに、FakeImageLoaderEngineTransition.Factory.NONEを設定しない問題を修正しました。
  • ColorImageから実験的アノテーションを削除しました。
  • CacheControlCacheStrategyでネットワークヘッダーを遅延的にパースするようにしました。
  • CircleCropTransformationRoundedCornersTransformationをリファクタリングし、共通のコードを共有するようにしました。
  • ExifOrientationStrategyRESPECT_PERFORMANCEではない場合、内部でBitmapFactoryを使用するようにフォールバックしました。
  • Kotlinを2.1.20に更新しました。
  • Composeを1.8.0に更新しました。
  • Okioを3.11.0に更新しました。
  • Skikoを0.9.4に更新しました。
  • Coroutinesを1.10.2に更新しました。
  • accompanist-drawablepainterを0.37.3に更新しました。

3.2.0-rc02からの変更点:

  • ExifOrientationStrategyRESPECT_PERFORMANCEではない場合、内部でBitmapFactoryを使用するようにフォールバックしました。
  • Composeを1.8.0に更新しました。
  • accompanist-drawablepainterを0.37.3に更新しました。

[3.2.0-rc02] - 2025年4月26日

  • 非JVMターゲットでKtorNetworkFetcherFactory(Ktor 3)を使用して画像をロードする際に、ClosedByteChannelExceptionで画像リクエストが失敗する問題を修正しました。

[3.2.0-rc01] - 2025年4月24日

  • 重要: coil-composecoil-compose-coreは、Compose 1.8.0がJava 11のバイトコードを要求するため、Java 11のバイトコードを必要とするようになりました。有効にする方法についてはこちらを参照してください。
  • AsyncImagePreviewHandlerの関数型コンストラクタが、AsyncImagePainter.State.LoadingではなくAsyncImagePainter.State.Successを返すように変更しました。
  • ConstraintsSizeResolver#size()におけるキャンセルを修正しました。
  • R8でビルドする際のPlatformContextの欠落に関する警告を修正しました。
  • デフォルトのFakeImageLoaderEngineのレスポンスが返されたときに、FakeImageLoaderEngineTransition.Factory.NONEを設定しない問題を修正しました。
  • ColorImageから実験的アノテーションを削除しました。
  • CacheControlCacheStrategyでネットワークヘッダーを遅延的にパースするようにしました。
  • CircleCropTransformationRoundedCornersTransformationをリファクタリングし、共通のコードを共有するようにしました。
  • coil-network-ktor2coil-network-ktor3kotlinx.ioのOkio相互運用モジュールを使用するようにしました。
  • Kotlinを2.1.20に更新しました。
  • Composeを1.8.0-rc01に更新しました。
  • Okioを3.11.0に更新しました。
  • Skikoを0.9.4に更新しました。
  • Coroutinesを1.10.2に更新しました。

[3.1.0] - 2025年2月4日

  • AsyncImageのパフォーマンスを改善しました。
    • コンポーザブルがインスタンス化されるか再利用されるかによって、実行時パフォーマンスが25%から40%改善されました。アロケーションも35%から48%削減されました。詳細についてはこちらを参照してください。
  • ColorImageを追加し、FakeImageを非推奨にしました。
    • ColorImageは、テストやプレビューで偽の値を返すのに便利です。FakeImageと同じユースケースを解決しますが、coil-testではなくcoil-coreでより簡単にアクセスできます。
  • coil-compose-coreDispatchers.Main.immedateへの依存を削除しました。
    • これにより、AsyncImagePainterがPaparazziおよびRoborazziのスクリーンショットテストでImageRequestを同期的に実行しないケースも修正されました。
  • data:[<mediatype>][;base64],<data>形式のデータURIのサポートを追加しました。
  • GIFのメタデータでエンコードされた繰り返し回数を使用するために、AnimatedImageDecoder.ENCODED_LOOP_COUNTを追加しました。
  • カスタム拡張をサポートするために、NetworkRequestExtrasを追加しました。
  • DiskCache.Builder.cleanupCoroutineContextを追加し、DiskCache.Builder.cleanupDispatcherを非推奨にしました。
  • API 29以上でandroid.graphics.ImageDecoderの使用をオプションで無効にするために、ImageLoader.Builder.imageDecoderEnabledを追加しました。
  • ImageRequestのデータ型に登録されたKeyerがない場合、警告をログ出力するようにしました。
  • CrossfadePainterを公開しました。
  • すべてのマルチプラットフォームターゲットでTransformationをサポートしました。
  • CacheControlCacheStrategyExpiresヘッダー値として0をサポートしました。
  • AsyncImage/SubcomposeAsyncImage/rememberAsyncImageが、ContentScaleNoneに変更された場合に新しいImageRequestを起動しない問題を修正しました。
  • Kotlinを2.1.10に更新しました。
    • 注: このリリースでは、LLVMの更新により、Kotlin Nativeを使用する場合、Kotlin 2.1.0以降でのコンパイルが必要です。
  • Composeを1.7.3に更新しました。
  • androidx.coreを1.15.0に更新しました。

[3.0.4] - 2024年11月25日

  • Android Studioのプレビューでベクタードローアブルがレンダリングされない問題を修正しました。
  • maxBitmapSizeを超えるリクエストに対するメモリキャッシュミスの可能性を修正しました。
  • AndroidでFakeImageがレンダリングされない問題を修正しました。
  • AsyncImage/rememberAsyncImagePainter/SubcomposeAsyncImageと一緒に使用した場合、リクエストのTransformationが変更されたときに新しい画像リクエストが起動しない問題を修正しました。
  • ScaleDrawableCrossfadeDrawableがtintの状態を尊重しない問題を修正しました。
  • ImageDecoderが部分的な画像ソースをデコードできるようにしました。これはBitmapFactoryの動作と一致します。
  • デコード後にBitmap.prepareToDraw()が呼び出されない問題を修正しました。
  • SvgDecoderは、非ラスター化画像に対してisSampled = trueを返すべきではありません。
  • Composeで即時メインディスパッチャーが利用できない場合、Dispatchers.Unconfinedを使用するようにフォールバックしました。これはプレビュー/テスト環境でのみ使用されます。
  • Ktor 2を2.3.13に更新しました。

[3.0.3] - 2024年11月14日

  • ImageViewScaleTypeに基づいてImageRequest.scaleを設定する問題を修正しました。
  • DiskCacheがファイル削除後のエントリの削除を正しく追跡しないエッジケースを修正しました。
  • エラーをログ出力する際に、Loggerにthrowableを渡すようにしました。
  • kotlin-stdlib-jdk7およびkotlin-stdlib-jdk8kotlin-stdlibで置き換えないようにしました。

[3.0.2] - 2024年11月9日

  • AndroidでカスタムのCacheStrategyを指定してOkHttpNetworkFetcherFactoryを呼び出すとクラッシュする問題を修正しました。
  • CacheControlCacheStrategyがキャッシュエントリの経過時間を誤って計算する問題を修正しました。
  • ImageRequest.bitmapConfigARGB_8888またはHARDWAREであった場合に、API 28以上でのみ尊重される問題を修正しました。

[3.0.1] - 2024年11月7日

  • ハードウェアビットマップを基盤とするBitmapImageImage.toBitmapを呼び出すとクラッシュする問題を修正しました。
  • AsyncImageModelEqualityDelegate.Defaultが非ImageRequestモデルに対して等価性を誤って比較する問題を修正しました。

[3.0.0] - 2024年11月4日

Coil 3.0.0は、Compose Multiplatformを完全にサポートするCoilの次のメジャーリリースです。

3.0.0における改善点と重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

3.0.0-rc02からの変更点:

  • 残りの非推奨メソッドを削除しました。

[3.0.0-rc02] - 2024年10月28日

3.xにおける改善点と重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。3.0.0-rc01からの変更点:

  • BlackholeDecoderを追加しました。これにより、ディスクキャッシュのみのプリロードが簡素化されます。
  • ConstraintsSizeResolverDrawScopeSizeResolverremember関数を追加しました。
  • AsyncImageの引数からEqualityDelegateを削除しました。代わりに、LocalAsyncImageModelEqualityDelegateを通じて設定されるべきです。
  • 親コンポーザブルがIntrinsicSizeを使用している場合にAsyncImageがレンダリングされない問題を修正しました。
  • AsyncImagePainterに子ペインタがない場合、AsyncImageが利用可能な制約を満たす問題を修正しました。
  • EqualityDelegateが無視されたために、rememberAsyncImagePainterがその状態が監視されると無限に再コンポーズされる問題を修正しました。
  • 特殊文字を含むFile/Pathパスのパースを修正しました。
  • VideoFrameDecoderでカスタムのFileSystem実装を使用する問題を修正しました。
  • Ktorを3.0.0に更新しました。
  • androidx.annotation1.9.0に更新しました。

[3.0.0-rc01] - 2024年10月8日

3.xにおける改善点と重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。3.0.0-alpha10からの変更点:

  • 破壊的変更: addLastModifiedToFileCacheKeyをデフォルトで無効にし、リクエストごとに設定できるようにしました。同じフラグでこの動作を再度有効にすることができます。
  • 新機能: 新しいcoil-network-cache-controlアーティファクトを導入しました。これは、Cache-Controlヘッダーのサポートを実装します。
  • 新機能: SvgDecoder.FactoryscaleToDensityプロパティを追加しました。このプロパティは、固有の寸法を持つSVGがデバイスの密度(Androidのみでサポート)で乗算されることを保証します。
  • ExifOrientationPolicyExifOrientationStrategyに名前変更しました。
  • MemoryCacheから共有できない画像を削除しました。
  • ConstraintsSizeResolverを公開しました。
  • setSingletonImageLoaderFactoryを安定化しました。
  • coil-network-ktor3で最適化されたJVM I/O関数を復元しました。
  • MIMEタイプリストにpdfを追加しました。
  • コンパイルSDKを35に更新しました。
  • Kotlinを2.0.20に更新しました。
  • Okioを3.9.1に更新しました。

[3.0.0-alpha10] - 2024年8月7日

  • 破壊的変更: ImageLoader.Builder.networkObserverEnabledNetworkFetcher用のConnectivityCheckerインターフェースに置き換えました。
    • ネットワークオブザーバーを無効にするには、KtorNetworkFetcherFactory/OkHttpNetworkFetcherFactoryのコンストラクタにConnectivityChecker.ONLINEを渡します。
  • 新機能: すべてのプラットフォームでCompose Multiplatformリソースの読み込みをサポートしました。リソースをロードするには、Res.getUriを使用します。
kotlin
AsyncImage(
    model = Res.getUri("drawable/image.jpg"),
    contentDescription = null,
)
  • ImageLoaderImageRequestmaxBitmapSizeプロパティを追加しました。
    • このプロパティはデフォルトで4096x4096であり、アロケートされたビットマップの寸法に安全な上限を提供します。これは、Size.ORIGINALで非常に大きな画像を誤ってロードし、メモリ不足例外を引き起こすのを防ぐのに役立ちます。
  • ExifOrientationPolicyをカスタムポリシーをサポートするインターフェースに変換しました。
  • WindowsのファイルパスのUri処理を修正しました。
  • Image APIから@ExperimentalCoilApiを削除しました。
  • Kotlinを2.0.10に更新しました。

[3.0.0-alpha09] - 2024年7月23日

  • 破壊的変更: io.coil-kt.coil3:coil-network-ktorアーティファクトをio.coil-kt.coil3:coil-network-ktor2に名前変更しました。これはKtor 2.xに依存します。さらに、io.coil-kt.coil3:coil-network-ktor3を導入しました。これはKtor 3.xに依存します。wasmJsのサポートはKtor 3.xでのみ利用可能です。
  • 新機能: AsyncImagePainter.restart()を追加し、画像リクエストを手動で再開できるようにしました。
  • NetworkClientおよび関連クラスから@ExperimentalCoilApiを削除しました。
  • ImageRequestを最適化し、不要なExtrasMapのアロケーションを回避しました。

[2.7.0] - 2024年7月17日

  • ImageLoader.executeAsyncImageSubcomposeAsyncImage、およびrememberAsyncImagePainterのパフォーマンスを向上させるために、内部コルーチンの使用をわずかに最適化しました。(#2205)
  • チャンク化されたレスポンスに対する重複したネットワーク呼び出しを修正しました。(#2363)
  • Kotlinを2.0.0に更新しました。
  • Compose UIを1.6.8に更新しました。
  • Okioを3.9.0に更新しました。

[3.0.0-alpha08] - 2024年7月8日

  • 破壊的変更: ImageRequestImageLoaderdispatcherメソッドをcoroutineContextに名前変更しました。たとえば、ImageRequest.Builder.dispatcherImageRequest.Builder.coroutineContextになりました。メソッドが任意のCoroutineContextを受け入れ、もはやDispatcherを必要としないため、名前が変更されました。
  • 修正: 競合状態により発生する可能性のあるIllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been appliedを修正しました。
    • 注: これにより、Dispatchers.Main.immediateへのソフトな依存関係が再導入されます。結果として、JVMでkotlinx-coroutines-swingへの依存関係を再追加する必要があります。インポートされない場合、ImageRequestはすぐにディスパッチされず、ImageRequest.placeholderを設定するまで、またはメモリキャッシュから解決するまでに1フレームの遅延が発生します。

[3.0.0-alpha07] - 2024年6月26日

  • 破壊的変更: AsyncImagePainterはデフォルトでonDrawを待たなくなり、代わりにSize.ORIGINALを使用します。
    • これにより、Roborazzi/Paparazziとの互換性の問題が修正され、全体的なテストの信頼性が向上します。
    • onDrawを待つ以前の動作に戻すには、ImageRequest.sizeResolverとしてDrawScopeSizeResolverを設定してください。
  • 破壊的変更: マルチプラットフォームImage APIをリファクタリングしました。特に、asCoilImageasImageに名前変更されました。
  • 破壊的変更: AsyncImagePainter.stateStateFlow<AsyncImagePainter.State>に変更されました。その値を監視するにはcollectAsStateを使用してください。これによりパフォーマンスが向上します。
  • 破壊的変更: AsyncImagePainter.imageLoaderAsyncImagePainter.requestStateFlow<AsyncImagePainter.Inputs>に統合されました。その値を監視するにはcollectAsStateを使用してください。これによりパフォーマンスが向上します。
  • 破壊的変更: リソース縮小の最適化を妨げるため、android.resource://example.package.name/drawable/image URIのサポートを削除しました。
  • 新機能: AsyncImagePreviewHandlerを導入し、AsyncImagePainterのプレビューレンダリング動作を制御できるようにしました。
  • 新機能: フレームインデックスによるビデオ画像抽出をサポートしました。(#2183)
  • 新機能: 任意のCoroutineDispatcherメソッドにCoroutineContextを渡すのをサポートしました。(#2241)。
  • 新機能: JSおよびWASM JSで弱参照メモリキャッシュをサポートしました。
  • ComposeでDispatchers.Main.immediateにディスパッチしないようにしました。副作用として、JVMではkotlinx-coroutines-swingをインポートする必要がなくなりました。
  • パフォーマンス向上のため、asyncを呼び出してComposeでディスポーザブルを作成しないようにしました(@mlykotomに感謝!)。(#2205)
  • グローバルなImageLoaderのextrasをOptionsに渡す問題を修正しました。(#2223)
  • 非Androidターゲットでcrossfade(false)が機能しない問題を修正しました。
  • VP8X機能フラグのバイトオフセットを修正しました。(#2199)。
  • 非Androidターゲット上のSvgDecoderを、描画時に画像をレンダリングする代わりにビットマップにレンダリングするように変換しました。これによりパフォーマンスが向上します。
    • この動作はSvgDecoder(renderToBitmap)を使用して制御できます。
  • ScaleDrawablecoil-gifからcoil-coreに移動しました。
  • Kotlinを2.0.0に更新しました。
  • Composeを1.6.11に更新しました。
  • Okioを3.9.0に更新しました。
  • Skikoを0.8.4に更新しました。
  • 3.xにおける重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

[3.0.0-alpha06] - 2024年2月29日

[3.0.0-alpha05] - 2024年2月28日

  • 新機能: wasmJsターゲットをサポートしました。
  • 非AndroidプラットフォームでBitmapにバックアップされていないImageを描画するために、DrawablePainterDrawableImageを作成しました。
    • Image APIは実験的であり、アルファリリース間で変更される可能性があります。
  • ContentPainterModifierModifier.Nodeを実装するように更新しました。
  • 修正: コンポーネントコールバックとネットワークオブザーバーの登録をバックグラウンドスレッドで遅延的に行いました。これにより、通常メインスレッドで発生していた初期化の遅延が解消されます。
  • 修正: ImageLoader.Builder.placeholder/error/fallbackImageRequestによって使用されない問題を修正しました。
  • Composeを1.6.0に更新しました。
  • Coroutinesを1.8.0に更新しました。
  • Okioを3.8.0に更新しました。
  • Skikoを0.7.94に更新しました。
  • 3.xにおける重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

[2.6.0] - 2024年2月23日

  • rememberAsyncImagePainterAsyncImageSubcomposeAsyncImage再起動可能でスキップ可能にしました。これにより、コンポーザブルの引数が変更されない限り、再コンポーズを回避することでパフォーマンスが向上します。
    • rememberAsyncImagePainterAsyncImage、およびSubcomposeAsyncImageにオプションのmodelEqualityDelegate引数を追加しました。これは、modelが再コンポーズをトリガーするかどうかを制御するためです。
  • ContentPainterModifierModifier.Nodeを実装するように更新しました。
  • 修正: コンポーネントコールバックとネットワークオブザーバーの登録をバックグラウンドスレッドで遅延的に行いました。これにより、通常メインスレッドで発生していた初期化の遅延が解消されます。
  • 修正: rememberAsyncImagePainterAsyncImage、およびSubcomposeAsyncImageImageRequest.listenerまたはImageRequest.targetが変更された場合、新しい画像リクエストを再起動しないようにしました。
  • 修正: AsyncImagePainterで画像リクエストを2回監視しないようにしました。
  • Kotlinを1.9.22に更新しました。
  • Composeを1.6.1に更新しました。
  • Okioを3.8.0に更新しました。
  • androidx.collectionを1.4.0に更新しました。
  • androidx.lifecycleを2.7.0に更新しました。

[3.0.0-alpha04] - 2024年2月1日

[3.0.0-alpha03] - 2024年1月20日

  • 破壊的変更: coil-networkcoil-network-ktorに名前変更されました。さらに、OkHttpに依存し、Ktorエンジンを指定する必要のない新しいcoil-network-okhttpアーティファクトが追加されました。
    • インポートするアーティファクトに応じて、KtorNetworkFetcherFactoryまたはOkHttpNetworkFetcherFactoryを使用してFetcher.Factoryを手動で参照できます。
  • AppleプラットフォームでのNSUrlのロードに対応しました。
  • AsyncImageclipToBoundsパラメータを追加しました。
  • 重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

[3.0.0-alpha02] - 2024年1月10日

  • 破壊的変更: coil-gifcoil-networkcoil-svgcoil-videoのパッケージが更新され、すべてのクラスがそれぞれcoil.gifcoil.networkcoil.svgcoil.videoの一部になりました。これにより、他のアーティファクトとのクラス名衝突を回避できます。
  • 破壊的変更: ImageDecoderDecoderAnimatedImageDecoderに名前変更されました。
  • 新機能: coil-gifcoil-networkcoil-svgcoil-videoのコンポーネントが、各ImageLoaderComponentRegistryに自動的に追加されるようになりました。
    • 明確にするために、3.0.0-alpha01とは異なり、NetworkFetcher.Factory()を手動でComponentRegistryに追加する必要はありませんio.coil-kt.coil3:coil-network:[version]Ktorエンジンをインポートするだけで、ネットワーク画像をロードするのに十分です。
    • これらのコンポーネントをComponentRegistryに手動で追加することも安全です。手動で追加されたコンポーネントは、自動的に追加されるコンポーネントよりも優先されます。
    • 優先する場合は、ImageLoader.Builder.serviceLoaderEnabled(false)を使用してこの動作を無効にできます。
  • 新機能: すべてのプラットフォームでcoil-svgをサポートしました。AndroidではAndroidSVG、非AndroidプラットフォームではSVGDOMによってサポートされています。
  • Coilは内部でAndroidのImageDecoder APIを使用するようになりました。これは、ファイル、リソース、またはコンテンツURIから直接デコードする際にパフォーマンス上の利点があります。
  • 修正: 複数のcoil3.Uriパースに関する修正。
  • 重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

[3.0.0-alpha01] - 2023年12月30日

  • 新機能: Compose Multiplatformのサポート。CoilはAndroid、JVM、iOS、macOS、JavaScriptをサポートするKotlin Multiplatformライブラリになりました。
  • CoilのMaven座標がio.coil-kt.coil3に更新され、そのインポートがcoil3に更新されました。これにより、Coil 3をCoil 2とバイナリ互換性の問題なく並行して実行できます。例えば、io.coil-kt:coil:[version]io.coil-kt.coil3:coil:[version]になりました。
  • coil-baseおよびcoil-compose-baseアーティファクトは、Coroutines、Ktor、およびAndroidXで使用される命名規則に合わせるため、それぞれcoil-coreおよびcoil-compose-coreに名前変更されました。
  • 重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。

[2.5.0] - 2023年10月30日

  • 新機能: MediaDataSourceFetcher.Factoryを追加し、coil-videoMediaDataSource実装のデコードをサポートしました。(#1795)
  • SHIFT6mデバイスをハードウェアビットマップのブラックリストに追加しました。(#1812)
  • 修正: 一辺が境界なしのサイズを返すペインタを防ぐようにしました。(#1826)
  • 修正: キャッシュされたヘッダーに非ASCII文字が含まれている場合、304 Not Modified後にディスクキャッシュのロードが失敗する問題を修正しました。(#1839)
  • 修正: FakeImageEngineがインターセプタチェーンのリクエストを更新しない問題を修正しました。(#1905)
  • コンパイルSDKを34に更新しました。
  • Kotlinを1.9.10に更新しました。
  • Coroutinesを1.7.3に更新しました。
  • accompanist-drawablepainterを0.32.0に更新しました。
  • androidx.annotationを1.7.0に更新しました。
  • androidx.compose.foundationを1.5.4に更新しました。
  • androidx.coreを1.12.0に更新しました。
  • androidx.exifinterface:exifinterfaceを1.3.6に更新しました。
  • androidx.lifecycleを2.6.2に更新しました。
  • com.squareup.okhttp3を4.12.0に更新しました。
  • com.squareup.okioを3.6.0に更新しました。

[2.4.0] - 2023年5月21日

  • DiskCacheget/editopenSnapshot/openEditorに名前変更しました。
  • AsyncImagePainterColorDrawableColorPainterに自動変換しないようにしました。
  • シンプルなAsyncImageオーバーロードに@NonRestartableComposableアノテーションを付けました。
  • 修正: ImageSourceContext.cacheDirを遅延呼び出しするようにしました。
  • 修正: coil-bomの公開を修正しました。
  • 修正: ハードウェアビットマップが無効な場合、常にビットマップ設定をARGB_8888に設定する問題を修正しました。
  • Kotlinを1.8.21に更新しました。
  • Coroutinesを1.7.1に更新しました。
  • accompanist-drawablepainterを0.30.1に更新しました。
  • androidx.compose.foundationを1.4.3に更新しました。
  • androidx.profileinstaller:profileinstallerを1.3.1に更新しました。
  • com.squareup.okhttp3を4.11.0に更新しました。

[2.3.0] - 2023年3月25日

  • 新機能: FakeImageLoaderEngineを含む新しいcoil-testアーティファクトを導入しました。このクラスは、テストで一貫性のある同期的な(メインスレッドからの)応答を保証するために、画像ローダーの応答をハードコーディングするのに役立ちます。詳細についてはこちらを参照してください。
  • 新機能: coil-basecoilの子モジュール)とcoil-compose-basecoil-composeの子モジュール)にベースラインプロファイルを追加しました。
  • 修正: エンコードされたデータを含むfile:// URIのパースを修正しました。 #1601
  • 修正: DiskCacheが、存在しないディレクトリを渡された場合でも最大サイズを正しく計算するように修正しました。 #1620
  • Coil.resetを公開APIにしました。 #1506
  • Javaデフォルトメソッド生成を有効にしました。 #1491
  • Kotlinを1.8.10に更新しました。
  • accompanist-drawablepainterを0.30.0に更新しました。
  • androidx.annotationを1.6.0に更新しました。
  • androidx.appcompat:appcompat-resourcesを1.6.1に更新しました。
  • androidx.compose.foundationを1.4.0に更新しました。
  • androidx.coreを1.9.0に更新しました。
  • androidx.exifinterface:exifinterfaceを1.3.6に更新しました。
  • androidx.lifecycleを2.6.1に更新しました。
  • okioを3.3.0に更新しました。

[2.2.2] - 2022年10月1日

  • システムコールバックを登録する前に、画像ローダーが完全に初期化されていることを確認するようにしました。 #1465
  • API 30以上でVideoFrameDecoderで推奨ビットマップ設定を設定するようにしました。 #1487
  • FileUriMapper#を含むパスのパースを修正しました。 #1466
  • ディスクキャッシュから非ASCIIヘッダーを持つ応答を読み取る問題を修正しました。 #1468
  • アセットのサブフォルダ内のビデオをデコードする問題を修正しました。 #1489
  • androidx.annotationを1.5.0に更新しました。

[2.2.1] - 2022年9月8日

  • 修正: RoundedCornersTransformationinputビットマップを正しくスケーリングするようになりました。
  • kotlin-parcelizeプラグインへの依存関係を削除しました。
  • コンパイルSDKを33に更新しました。
  • androidx.appcompat:appcompat-resourcesを1.4.2にダウングレードし、#1423の回避策としました。

[2.2.0] - 2022年8月16日

  • 新機能: coil-videoImageRequest.videoFramePercentを追加し、ビデオの持続時間の割合としてビデオフレームを指定できるようにしました。
  • 新機能: ExifOrientationPolicyを追加し、BitmapFactoryDecoderがEXIFオリエンテーションデータをどのように処理するかを設定できるようにしました。
  • 修正: 未定義の寸法を持つサイズが渡された場合にRoundedCornersTransformationで例外をスローしないようにしました。
  • 修正: GIFのフレーム遅延を1バイトの符号付きバイトではなく、2バイトの符号なしバイトとして読み取るようにしました。
  • Kotlinを1.7.10に更新しました。
  • Coroutinesを1.6.4に更新しました。
  • Composeを1.2.1に更新しました。
  • OkHttpを4.10.0に更新しました。
  • Okioを3.2.0に更新しました。
  • accompanist-drawablepainterを0.25.1に更新しました。
  • androidx.annotationを1.4.0に更新しました。
  • androidx.appcompat:appcompat-resourcesを1.5.0に更新しました。
  • androidx.coreを1.8.0に更新しました。

[2.1.0] - 2022年5月17日

  • 新機能: ByteArrayのロードに対応しました。(#1202)
  • 新機能: ImageRequest.Builder.cssを使用してSVGにカスタムCSSルールを設定するのをサポートしました。(#1210)
  • 修正: GenericViewTargetのプライベートメソッドをprotectedに変換しました。(#1273)
  • コンパイルSDKを32に更新しました。(#1268)

[2.0.0] - 2022年5月10日

Coil 2.0.0はライブラリのメジャーイテレーションであり、破壊的変更を含みます。アップグレード方法についてはアップグレードガイドをご覧ください。

  • 新機能: coil-composeAsyncImageを導入しました。詳細についてはドキュメントをご覧ください。
kotlin
// ネットワークから画像を表示します。
AsyncImage(
    model = "https://example.com/image.jpg",
    contentDescription = null,
)

// ネットワークからプレースホルダー、円形トリミング、クロスフェードアニメーション付きで画像を表示します。
AsyncImage(
    model = ImageRequest.Builder(LocalContext.current)
        .data("https://example.com/image.jpg")
        .crossfade(true)
        .build(),
    placeholder = painterResource(R.drawable.placeholder),
    contentDescription = stringResource(R.string.description),
    contentScale = ContentScale.Crop,
    modifier = Modifier.clip(CircleShape)
)
  • 新機能: 公開DiskCache APIを導入しました。
    • ImageLoader.Builder.diskCacheDiskCache.Builderを使用してディスクキャッシュを設定します。
    • Coil 2.0ではOkHttpのCacheを使用すべきではありません。詳細についてはこちらをご覧ください。
    • Cache-Controlおよびその他のキャッシュヘッダーは引き続きサポートされます。ただし、VaryヘッダーはキャッシュがURLの一致のみをチェックするため除きます。さらに、応答コードが[200..300)の範囲にある応答のみがキャッシュされます。
    • 2.0にアップグレードする際に、既存のディスクキャッシュはクリアされます。
  • 最小サポートAPIが21になりました。
  • ImageRequestのデフォルトのScaleScale.FITになりました。
    • これは、ImageRequest.scaleをデフォルトのScaleを持つ他のクラスと一致させるために変更されました。
    • ImageViewTargetを持つリクエストは、引き続きScaleが自動検出されます。
  • 画像パイプラインクラスを再設計しました。
    • MapperFetcherDecoderはより柔軟になるようにリファクタリングされました。
    • Fetcher.keyは新しいKeyerインターフェースに置き換えられました。Keyerは入力データからキャッシュキーを作成します。
    • DecoderがOkioのファイルシステムAPIを使用してFileを直接読み取れるようにImageSourceを追加しました。
  • Jetpack Compose統合を再設計しました。
    • rememberImagePainterImagePainterは、それぞれrememberAsyncImagePainterAsyncImagePainterに名前変更されました。
    • LocalImageLoaderを非推奨にしました。詳細については非推奨メッセージをご覧ください。
  • ランタイムのnullでないアサーションの生成を無効にしました。
    • Javaを使用している場合、nullでないとアノテーションされた引数にnullを渡しても、直ちにNullPointerExceptionがスローされなくなります。Kotlinのコンパイル時のnull安全性はこれを防ぎます。
    • この変更により、ライブラリのサイズが小さくなります。
  • Sizeは、その幅と高さの2つのDimension値で構成されるようになりました。Dimensionは、正のピクセル値またはDimension.Undefinedのいずれかになります。詳細についてはこちらをご覧ください。
  • BitmapPoolPoolableViewTargetはライブラリから削除されました。
  • VideoFrameFileFetcherVideoFrameUriFetcherはライブラリから削除されました。代わりに、すべてのデータソースをサポートするVideoFrameDecoderを使用してください。
  • BlurTransformationGrayscaleTransformationはライブラリから削除されました。使用している場合は、そのコードをプロジェクトにコピーできます。
  • Transition.transitionは、遷移が完了するまで中断する必要がなくなったため、非中断関数に変更されました。
  • 進行中のBitmapFactory操作の最大数を制限するbitmapFactoryMaxParallelismのサポートを追加しました。この値はデフォルトで4であり、UIパフォーマンスを向上させます。
  • interceptorDispatcherfetcherDispatcherdecoderDispatcher、およびtransformationDispatcherのサポートを追加しました。
  • 共通のViewTargetロジックを処理するGenericViewTargetを追加しました。
  • ByteBufferをデフォルトでサポートされるデータ型に追加しました。
  • Disposableはリファクタリングされ、基になるImageRequestのジョブを公開します。
  • MemoryCache APIを再設計しました。
  • ImageRequest.errorは、ImageRequest.fallbackがnullの場合にTargetに設定されるようになりました。
  • Transformation.keyTransformation.cacheKeyに置き換えられました。
  • Kotlinを1.6.10に更新しました。
  • Composeを1.1.1に更新しました。
  • OkHttpを4.9.3に更新しました。
  • Okioを3.0.0に更新しました。

2.0.0-rc03からの変更点:

  • Dimension.OriginalDimension.Undefinedに変換しました。
    • これは、サイズシステムにおけるいくつかのエッジケース()を修正するために、非ピクセル次元のセマンティクスをわずかに変更します。
  • ContentScaleNoneの場合、画像をSize.ORIGINALでロードするようにしました。
  • ImageView.loadビルダー引数を最後に設定するのではなく、最初に適用する問題を修正しました。
  • 応答が変更されていない場合、HTTPヘッダーを結合しない問題を修正しました。

[2.0.0-rc03] - 2022年4月11日

  • ScaleResolverインターフェースを削除しました。
  • Sizeコンストラクタを関数に変換しました。
  • Dimension.PixelstoStringがピクセル値のみを返すように変更しました。
  • SystemCallbacks.onTrimMemoryでのまれなクラッシュを防ぐようにしました。
  • Coroutinesを1.6.1に更新しました。

[2.0.0-rc02] - 2022年3月20日

  • ImageRequestのデフォルトサイズをSize.ORIGINALではなく、現在のディスプレイのサイズに戻しました。
  • DiskCache.Builderが実験的とマークされている問題を修正しました。DiskCacheのメソッドのみが実験的です。
  • ImageViewWRAP_CONTENTの次元を持つ画像をロードすると、境界のある次元に収まるのではなく、元のサイズで画像がロードされるケースを修正しました。
  • MemoryCache.KeyMemoryCache.ValueParameters.Entryからコンポーネント関数を削除しました。

[2.0.0-rc01] - 2022年3月2日

1.4.0からの主な変更点:

  • 最小サポートAPIが21になりました。
  • Jetpack Compose統合を再設計しました。
    • rememberImagePainterrememberAsyncImagePainterに名前変更されました。
    • AsyncImageSubcomposeAsyncImageのサポートを追加しました。詳細についてはドキュメントをご覧ください。
    • LocalImageLoaderを非推奨にしました。詳細については非推奨メッセージをご覧ください。
  • Coil 2.0は独自のディスクキャッシュ実装を持ち、ディスクキャッシュにOkHttpに依存しなくなりました。
    • ImageLoader.Builder.diskCacheDiskCache.Builderを使用してディスクキャッシュを設定します。
    • スレッドが書き込み中に中断された場合、キャッシュが破損する可能性があるため、Coil 2.0でOkHttpのCacheを使用すべきではありません
    • Cache-Controlおよびその他のキャッシュヘッダーは引き続きサポートされます。ただし、VaryヘッダーはキャッシュがURLの一致のみをチェックするため除きます。さらに、応答コードが[200..300)の範囲にある応答のみがキャッシュされます。
    • 2.0にアップグレードする際に、既存のディスクキャッシュはクリアされます。
  • ImageRequestのデフォルトのScaleScale.FITになりました。
    • これは、ImageRequest.scaleをデフォルトのScaleを持つ他のクラスと一致させるために変更されました。
    • ImageViewTargetを持つリクエストは、引き続きScaleが自動検出されます。
  • ImageRequestのデフォルトサイズがSize.ORIGINALになりました。
  • 画像パイプラインクラスを再設計しました。
    • MapperFetcherDecoderはより柔軟になるようにリファクタリングされました。
    • Fetcher.keyは新しいKeyerインターフェースに置き換えられました。Keyerは入力データからキャッシュキーを作成します。
    • DecoderがOkioのファイルシステムAPIを使用してFileを直接読み取れるようにImageSourceを追加しました。
  • ラン