変更履歴
[3.3.0] - 2025年7月22日
- 新機能: アプリがバックグラウンドにある間、Androidで
MemoryCache.maxSizeを制限する新しいAPIを導入しました。ImageLoader.Builder.memoryCacheMaxSizePercentWhileInBackgroundが設定されている場合、アプリがバックグラウンドにある間、ImageLoaderのメモリキャッシュはその最大サイズの一定の割合に制限されます。この設定は現在、デフォルトで無効になっています。- アプリがバックグラウンドにあるときに、メモリキャッシュから画像がトリミングされ、制限された最大サイズに達します。ただし、最近トリミングされた画像へのメモリキャッシュの弱参照(weak references)は影響を受けません。これは、画像が現在他の場所で参照されている場合(例:
AsyncImage、ImageViewなど)、メモリキャッシュに引き続き存在することを意味します。 - このAPIは、バックグラウンドでのメモリ使用量を削減し、アプリが強制終了されるのを防ぎ、ユーザーのデバイスのメモリ負荷を軽減するのに役立ちます。
- 新機能:
SvgDecoderにSvg.Parser引数を追加しました。- これにより、デフォルトのSVGパーサーがニーズに合わない場合、カスタムのSVGパーサーを使用できるようになります。
SvgDecoderにdensity引数を追加し、カスタムの密度乗数を指定できるようにしました。Uri.Builderを追加し、Uriのコピーと変更をサポートしました。ImageLoader.Builder.mainCoroutineContextを追加し、テストでCoilのDispatchers.main.immediateの使用をオーバーライドできるようにしました。CrossfadePainter.intrinsicSizeが、アニメーションの最後にstart画像が参照解除されたときに変更される問題を修正しました。これはCrossfadeDrawableの動作と一致します。ImageLoaders.executeBlockingがJavaからアクセスできない問題を修正しました。coil-network-ktor3でkotlinx.ioのOkio相互運用モジュールを使用するようにしました。kotlinx-datetimeを0.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-composeとcoil-compose-coreは、Compose1.8.0がJava 11のバイトコードを要求するため、Java 11のバイトコードを必要とするようになりました。有効にする方法についてはこちらを参照してください。 AsyncImagePreviewHandlerの関数型コンストラクタが、AsyncImagePainter.State.LoadingではなくAsyncImagePainter.State.Successを返すように変更しました。ConstraintsSizeResolver#size()におけるキャンセルを修正しました。- R8でビルドする際の
PlatformContextの欠落に関する警告を修正しました。 - デフォルトの
FakeImageLoaderEngineのレスポンスが返されたときに、FakeImageLoaderEngineがTransition.Factory.NONEを設定しない問題を修正しました。 ColorImageから実験的アノテーションを削除しました。CacheControlCacheStrategyでネットワークヘッダーを遅延的にパースするようにしました。CircleCropTransformationとRoundedCornersTransformationをリファクタリングし、共通のコードを共有するようにしました。ExifOrientationStrategyがRESPECT_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からの変更点:
ExifOrientationStrategyがRESPECT_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-composeとcoil-compose-coreは、Compose1.8.0がJava 11のバイトコードを要求するため、Java 11のバイトコードを必要とするようになりました。有効にする方法についてはこちらを参照してください。 AsyncImagePreviewHandlerの関数型コンストラクタが、AsyncImagePainter.State.LoadingではなくAsyncImagePainter.State.Successを返すように変更しました。ConstraintsSizeResolver#size()におけるキャンセルを修正しました。- R8でビルドする際の
PlatformContextの欠落に関する警告を修正しました。 - デフォルトの
FakeImageLoaderEngineのレスポンスが返されたときに、FakeImageLoaderEngineがTransition.Factory.NONEを設定しない問題を修正しました。 ColorImageから実験的アノテーションを削除しました。CacheControlCacheStrategyでネットワークヘッダーを遅延的にパースするようにしました。CircleCropTransformationとRoundedCornersTransformationをリファクタリングし、共通のコードを共有するようにしました。coil-network-ktor2とcoil-network-ktor3でkotlinx.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-coreのDispatchers.Main.immedateへの依存を削除しました。- これにより、
AsyncImagePainterがPaparazziおよびRoborazziのスクリーンショットテストでImageRequestを同期的に実行しないケースも修正されました。
- これにより、
data:[<mediatype>][;base64],<data>形式のデータURIのサポートを追加しました。- GIFのメタデータでエンコードされた繰り返し回数を使用するために、
AnimatedImageDecoder.ENCODED_LOOP_COUNTを追加しました。 - カスタム拡張をサポートするために、
NetworkRequestにExtrasを追加しました。 DiskCache.Builder.cleanupCoroutineContextを追加し、DiskCache.Builder.cleanupDispatcherを非推奨にしました。- API 29以上で
android.graphics.ImageDecoderの使用をオプションで無効にするために、ImageLoader.Builder.imageDecoderEnabledを追加しました。 ImageRequestのデータ型に登録されたKeyerがない場合、警告をログ出力するようにしました。CrossfadePainterを公開しました。- すべてのマルチプラットフォームターゲットで
Transformationをサポートしました。 CacheControlCacheStrategyでExpiresヘッダー値として0をサポートしました。AsyncImage/SubcomposeAsyncImage/rememberAsyncImageが、ContentScaleがNoneに変更された場合に新しい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が変更されたときに新しい画像リクエストが起動しない問題を修正しました。ScaleDrawableとCrossfadeDrawableがtintの状態を尊重しない問題を修正しました。ImageDecoderが部分的な画像ソースをデコードできるようにしました。これはBitmapFactoryの動作と一致します。- デコード後に
Bitmap.prepareToDraw()が呼び出されない問題を修正しました。 SvgDecoderは、非ラスター化画像に対してisSampled = trueを返すべきではありません。- Composeで即時メインディスパッチャーが利用できない場合、
Dispatchers.Unconfinedを使用するようにフォールバックしました。これはプレビュー/テスト環境でのみ使用されます。 - Ktor 2を
2.3.13に更新しました。
[3.0.3] - 2024年11月14日
ImageViewのScaleTypeに基づいてImageRequest.scaleを設定する問題を修正しました。DiskCacheがファイル削除後のエントリの削除を正しく追跡しないエッジケースを修正しました。- エラーをログ出力する際に、
Loggerにthrowableを渡すようにしました。 kotlin-stdlib-jdk7およびkotlin-stdlib-jdk8をkotlin-stdlibで置き換えないようにしました。
[3.0.2] - 2024年11月9日
- Androidでカスタムの
CacheStrategyを指定してOkHttpNetworkFetcherFactoryを呼び出すとクラッシュする問題を修正しました。 CacheControlCacheStrategyがキャッシュエントリの経過時間を誤って計算する問題を修正しました。ImageRequest.bitmapConfigがARGB_8888またはHARDWAREであった場合に、API 28以上でのみ尊重される問題を修正しました。
[3.0.1] - 2024年11月7日
- ハードウェアビットマップを基盤とする
BitmapImageでImage.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を追加しました。これにより、ディスクキャッシュのみのプリロードが簡素化されます。ConstraintsSizeResolverとDrawScopeSizeResolverのremember関数を追加しました。AsyncImageの引数からEqualityDelegateを削除しました。代わりに、LocalAsyncImageModelEqualityDelegateを通じて設定されるべきです。- 親コンポーザブルが
IntrinsicSizeを使用している場合にAsyncImageがレンダリングされない問題を修正しました。 AsyncImagePainterに子ペインタがない場合、AsyncImageが利用可能な制約を満たす問題を修正しました。EqualityDelegateが無視されたために、rememberAsyncImagePainterがその状態が監視されると無限に再コンポーズされる問題を修正しました。- 特殊文字を含む
File/Pathパスのパースを修正しました。 VideoFrameDecoderでカスタムのFileSystem実装を使用する問題を修正しました。- Ktorを
3.0.0に更新しました。 androidx.annotationを1.9.0に更新しました。
[3.0.0-rc01] - 2024年10月8日
3.xにおける改善点と重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。3.0.0-alpha10からの変更点:
- 破壊的変更:
addLastModifiedToFileCacheKeyをデフォルトで無効にし、リクエストごとに設定できるようにしました。同じフラグでこの動作を再度有効にすることができます。 - 新機能: 新しい
coil-network-cache-controlアーティファクトを導入しました。これは、Cache-Controlヘッダーのサポートを実装します。 - 新機能:
SvgDecoder.FactoryにscaleToDensityプロパティを追加しました。このプロパティは、固有の寸法を持つSVGがデバイスの密度(Androidのみでサポート)で乗算されることを保証します。 ExifOrientationPolicyをExifOrientationStrategyに名前変更しました。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.networkObserverEnabledをNetworkFetcher用のConnectivityCheckerインターフェースに置き換えました。- ネットワークオブザーバーを無効にするには、
KtorNetworkFetcherFactory/OkHttpNetworkFetcherFactoryのコンストラクタにConnectivityChecker.ONLINEを渡します。
- ネットワークオブザーバーを無効にするには、
- 新機能: すべてのプラットフォームでCompose Multiplatformリソースの読み込みをサポートしました。リソースをロードするには、
Res.getUriを使用します。
kotlin
AsyncImage(
model = Res.getUri("drawable/image.jpg"),
contentDescription = null,
)ImageLoaderとImageRequestにmaxBitmapSizeプロパティを追加しました。- このプロパティはデフォルトで4096x4096であり、アロケートされたビットマップの寸法に安全な上限を提供します。これは、
Size.ORIGINALで非常に大きな画像を誤ってロードし、メモリ不足例外を引き起こすのを防ぐのに役立ちます。
- このプロパティはデフォルトで4096x4096であり、アロケートされたビットマップの寸法に安全な上限を提供します。これは、
ExifOrientationPolicyをカスタムポリシーをサポートするインターフェースに変換しました。- Windowsのファイルパスの
Uri処理を修正しました。 ImageAPIから@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を最適化し、不要なExtrasとMapのアロケーションを回避しました。
[2.7.0] - 2024年7月17日
ImageLoader.execute、AsyncImage、SubcomposeAsyncImage、およびrememberAsyncImagePainterのパフォーマンスを向上させるために、内部コルーチンの使用をわずかに最適化しました。(#2205)- チャンク化されたレスポンスに対する重複したネットワーク呼び出しを修正しました。(#2363)
- Kotlinを2.0.0に更新しました。
- Compose UIを1.6.8に更新しました。
- Okioを3.9.0に更新しました。
[3.0.0-alpha08] - 2024年7月8日
- 破壊的変更:
ImageRequestとImageLoaderのdispatcherメソッドをcoroutineContextに名前変更しました。たとえば、ImageRequest.Builder.dispatcherはImageRequest.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を設定してください。
- 破壊的変更: マルチプラットフォーム
ImageAPIをリファクタリングしました。特に、asCoilImageがasImageに名前変更されました。 - 破壊的変更:
AsyncImagePainter.stateがStateFlow<AsyncImagePainter.State>に変更されました。その値を監視するにはcollectAsStateを使用してください。これによりパフォーマンスが向上します。 - 破壊的変更:
AsyncImagePainter.imageLoaderとAsyncImagePainter.requestがStateFlow<AsyncImagePainter.Inputs>に統合されました。その値を監視するにはcollectAsStateを使用してください。これによりパフォーマンスが向上します。 - 破壊的変更: リソース縮小の最適化を妨げるため、
android.resource://example.package.name/drawable/imageURIのサポートを削除しました。- その機能がまだ必要な場合は、コンポーネントレジストリに
ResourceUriMapperを手動で含めることができます。
- その機能がまだ必要な場合は、コンポーネントレジストリに
- 新機能:
AsyncImagePreviewHandlerを導入し、AsyncImagePainterのプレビューレンダリング動作を制御できるようにしました。- プレビュー動作をオーバーライドするには、
LocalAsyncImagePreviewHandlerを使用してください。 - この変更および他の
coil-composeの改善の一環として、AsyncImagePainterはデフォルトでImageRequest.placeholderを表示する代わりに、ImageRequestの実行を試みるようになりました。プレビュー環境ではネットワークまたはファイルを使用するリクエストは失敗することが予想されますが、Androidリソースは動作するはずです。
- プレビュー動作をオーバーライドするには、
- 新機能: フレームインデックスによるビデオ画像抽出をサポートしました。(#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)を使用して制御できます。
- この動作は
ScaleDrawableをcoil-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日
- Skikoを0.7.93にダウングレードしました。
- 3.xにおける重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。
[3.0.0-alpha05] - 2024年2月28日
- 新機能:
wasmJsターゲットをサポートしました。 - 非Androidプラットフォームで
BitmapにバックアップされていないImageを描画するために、DrawablePainterとDrawableImageを作成しました。ImageAPIは実験的であり、アルファリリース間で変更される可能性があります。
ContentPainterModifierをModifier.Nodeを実装するように更新しました。- 修正: コンポーネントコールバックとネットワークオブザーバーの登録をバックグラウンドスレッドで遅延的に行いました。これにより、通常メインスレッドで発生していた初期化の遅延が解消されます。
- 修正:
ImageLoader.Builder.placeholder/error/fallbackがImageRequestによって使用されない問題を修正しました。 - Composeを1.6.0に更新しました。
- Coroutinesを1.8.0に更新しました。
- Okioを3.8.0に更新しました。
- Skikoを0.7.94に更新しました。
- 3.xにおける重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。
[2.6.0] - 2024年2月23日
rememberAsyncImagePainter、AsyncImage、SubcomposeAsyncImageを再起動可能でスキップ可能にしました。これにより、コンポーザブルの引数が変更されない限り、再コンポーズを回避することでパフォーマンスが向上します。rememberAsyncImagePainter、AsyncImage、およびSubcomposeAsyncImageにオプションのmodelEqualityDelegate引数を追加しました。これは、modelが再コンポーズをトリガーするかどうかを制御するためです。
ContentPainterModifierをModifier.Nodeを実装するように更新しました。- 修正: コンポーネントコールバックとネットワークオブザーバーの登録をバックグラウンドスレッドで遅延的に行いました。これにより、通常メインスレッドで発生していた初期化の遅延が解消されます。
- 修正:
rememberAsyncImagePainter、AsyncImage、およびSubcomposeAsyncImageでImageRequest.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日
- 破壊的変更:
OkHttpNetworkFetcherFactoryとKtorNetworkFetcherFactoryの公開APIからLazyを削除しました。 OkHttpNetworkFetcherFactoryでOkHttpClientの代わりにCall.Factoryを公開しました。NetworkResponseBodyをByteStringをラップするように変換しました。- Composeを1.5.12にダウングレードしました。
- 重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。
[3.0.0-alpha03] - 2024年1月20日
- 破壊的変更:
coil-networkがcoil-network-ktorに名前変更されました。さらに、OkHttpに依存し、Ktorエンジンを指定する必要のない新しいcoil-network-okhttpアーティファクトが追加されました。- インポートするアーティファクトに応じて、
KtorNetworkFetcherFactoryまたはOkHttpNetworkFetcherFactoryを使用してFetcher.Factoryを手動で参照できます。
- インポートするアーティファクトに応じて、
- Appleプラットフォームでの
NSUrlのロードに対応しました。 AsyncImageにclipToBoundsパラメータを追加しました。- 重要な変更点の完全なリストについては、アップグレードガイドをご覧ください。
[3.0.0-alpha02] - 2024年1月10日
- 破壊的変更:
coil-gif、coil-network、coil-svg、coil-videoのパッケージが更新され、すべてのクラスがそれぞれcoil.gif、coil.network、coil.svg、coil.videoの一部になりました。これにより、他のアーティファクトとのクラス名衝突を回避できます。 - 破壊的変更:
ImageDecoderDecoderがAnimatedImageDecoderに名前変更されました。 - 新機能:
coil-gif、coil-network、coil-svg、coil-videoのコンポーネントが、各ImageLoaderのComponentRegistryに自動的に追加されるようになりました。- 明確にするために、
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の
ImageDecoderAPIを使用するようになりました。これは、ファイル、リソース、またはコンテンツ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-videoでMediaDataSource実装のデコードをサポートしました。(#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日
DiskCacheのget/editをopenSnapshot/openEditorに名前変更しました。AsyncImagePainterでColorDrawableをColorPainterに自動変換しないようにしました。- シンプルな
AsyncImageオーバーロードに@NonRestartableComposableアノテーションを付けました。 - 修正:
ImageSourceでContext.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-base(coilの子モジュール)とcoil-compose-base(coil-composeの子モジュール)にベースラインプロファイルを追加しました。- これにより、Coilの実行時パフォーマンスが向上し、アプリでのCoilの使用方法に応じてフレームタイミングが改善されるはずです。
- 修正: エンコードされたデータを含む
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日
- 修正:
RoundedCornersTransformationがinputビットマップを正しくスケーリングするようになりました。 kotlin-parcelizeプラグインへの依存関係を削除しました。- コンパイルSDKを33に更新しました。
androidx.appcompat:appcompat-resourcesを1.4.2にダウングレードし、#1423の回避策としました。
[2.2.0] - 2022年8月16日
- 新機能:
coil-videoにImageRequest.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-composeにAsyncImageを導入しました。詳細についてはドキュメントをご覧ください。
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)
)- 新機能: 公開
DiskCacheAPIを導入しました。ImageLoader.Builder.diskCacheとDiskCache.Builderを使用してディスクキャッシュを設定します。- Coil 2.0ではOkHttpの
Cacheを使用すべきではありません。詳細についてはこちらをご覧ください。 Cache-Controlおよびその他のキャッシュヘッダーは引き続きサポートされます。ただし、VaryヘッダーはキャッシュがURLの一致のみをチェックするため除きます。さらに、応答コードが[200..300)の範囲にある応答のみがキャッシュされます。- 2.0にアップグレードする際に、既存のディスクキャッシュはクリアされます。
- 最小サポートAPIが21になりました。
ImageRequestのデフォルトのScaleがScale.FITになりました。- これは、
ImageRequest.scaleをデフォルトのScaleを持つ他のクラスと一致させるために変更されました。 ImageViewTargetを持つリクエストは、引き続きScaleが自動検出されます。
- これは、
- 画像パイプラインクラスを再設計しました。
Mapper、Fetcher、Decoderはより柔軟になるようにリファクタリングされました。Fetcher.keyは新しいKeyerインターフェースに置き換えられました。Keyerは入力データからキャッシュキーを作成します。DecoderがOkioのファイルシステムAPIを使用してFileを直接読み取れるようにImageSourceを追加しました。
- Jetpack Compose統合を再設計しました。
rememberImagePainterとImagePainterは、それぞれrememberAsyncImagePainterとAsyncImagePainterに名前変更されました。LocalImageLoaderを非推奨にしました。詳細については非推奨メッセージをご覧ください。
- ランタイムのnullでないアサーションの生成を無効にしました。
- Javaを使用している場合、nullでないとアノテーションされた引数にnullを渡しても、直ちに
NullPointerExceptionがスローされなくなります。Kotlinのコンパイル時のnull安全性はこれを防ぎます。 - この変更により、ライブラリのサイズが小さくなります。
- Javaを使用している場合、nullでないとアノテーションされた引数にnullを渡しても、直ちに
Sizeは、その幅と高さの2つのDimension値で構成されるようになりました。Dimensionは、正のピクセル値またはDimension.Undefinedのいずれかになります。詳細についてはこちらをご覧ください。BitmapPoolとPoolableViewTargetはライブラリから削除されました。VideoFrameFileFetcherとVideoFrameUriFetcherはライブラリから削除されました。代わりに、すべてのデータソースをサポートするVideoFrameDecoderを使用してください。BlurTransformationとGrayscaleTransformationはライブラリから削除されました。使用している場合は、そのコードをプロジェクトにコピーできます。Transition.transitionは、遷移が完了するまで中断する必要がなくなったため、非中断関数に変更されました。- 進行中の
BitmapFactory操作の最大数を制限するbitmapFactoryMaxParallelismのサポートを追加しました。この値はデフォルトで4であり、UIパフォーマンスを向上させます。 interceptorDispatcher、fetcherDispatcher、decoderDispatcher、およびtransformationDispatcherのサポートを追加しました。- 共通の
ViewTargetロジックを処理するGenericViewTargetを追加しました。 ByteBufferをデフォルトでサポートされるデータ型に追加しました。Disposableはリファクタリングされ、基になるImageRequestのジョブを公開します。MemoryCacheAPIを再設計しました。ImageRequest.errorは、ImageRequest.fallbackがnullの場合にTargetに設定されるようになりました。Transformation.keyはTransformation.cacheKeyに置き換えられました。- Kotlinを1.6.10に更新しました。
- Composeを1.1.1に更新しました。
- OkHttpを4.9.3に更新しました。
- Okioを3.0.0に更新しました。
2.0.0-rc03からの変更点:
Dimension.OriginalをDimension.Undefinedに変換しました。- これは、サイズシステムにおけるいくつかのエッジケース(例)を修正するために、非ピクセル次元のセマンティクスをわずかに変更します。
ContentScaleがNoneの場合、画像をSize.ORIGINALでロードするようにしました。ImageView.loadビルダー引数を最後に設定するのではなく、最初に適用する問題を修正しました。- 応答が変更されていない場合、HTTPヘッダーを結合しない問題を修正しました。
[2.0.0-rc03] - 2022年4月11日
ScaleResolverインターフェースを削除しました。Sizeコンストラクタを関数に変換しました。Dimension.PixelsのtoStringがピクセル値のみを返すように変更しました。SystemCallbacks.onTrimMemoryでのまれなクラッシュを防ぐようにしました。- Coroutinesを1.6.1に更新しました。
[2.0.0-rc02] - 2022年3月20日
ImageRequestのデフォルトサイズをSize.ORIGINALではなく、現在のディスプレイのサイズに戻しました。DiskCache.Builderが実験的とマークされている問題を修正しました。DiskCacheのメソッドのみが実験的です。ImageViewにWRAP_CONTENTの次元を持つ画像をロードすると、境界のある次元に収まるのではなく、元のサイズで画像がロードされるケースを修正しました。MemoryCache.Key、MemoryCache.Value、Parameters.Entryからコンポーネント関数を削除しました。
[2.0.0-rc01] - 2022年3月2日
1.4.0からの主な変更点:
- 最小サポートAPIが21になりました。
- Jetpack Compose統合を再設計しました。
rememberImagePainterはrememberAsyncImagePainterに名前変更されました。AsyncImageとSubcomposeAsyncImageのサポートを追加しました。詳細についてはドキュメントをご覧ください。LocalImageLoaderを非推奨にしました。詳細については非推奨メッセージをご覧ください。
- Coil 2.0は独自のディスクキャッシュ実装を持ち、ディスクキャッシュにOkHttpに依存しなくなりました。
ImageLoader.Builder.diskCacheとDiskCache.Builderを使用してディスクキャッシュを設定します。- スレッドが書き込み中に中断された場合、キャッシュが破損する可能性があるため、Coil 2.0でOkHttpの
Cacheを使用すべきではありません。 Cache-Controlおよびその他のキャッシュヘッダーは引き続きサポートされます。ただし、VaryヘッダーはキャッシュがURLの一致のみをチェックするため除きます。さらに、応答コードが[200..300)の範囲にある応答のみがキャッシュされます。- 2.0にアップグレードする際に、既存のディスクキャッシュはクリアされます。
ImageRequestのデフォルトのScaleがScale.FITになりました。- これは、
ImageRequest.scaleをデフォルトのScaleを持つ他のクラスと一致させるために変更されました。 ImageViewTargetを持つリクエストは、引き続きScaleが自動検出されます。
- これは、
ImageRequestのデフォルトサイズがSize.ORIGINALになりました。- 画像パイプラインクラスを再設計しました。
Mapper、Fetcher、Decoderはより柔軟になるようにリファクタリングされました。Fetcher.keyは新しいKeyerインターフェースに置き換えられました。Keyerは入力データからキャッシュキーを作成します。DecoderがOkioのファイルシステムAPIを使用してFileを直接読み取れるようにImageSourceを追加しました。
- ラン
