<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Compose Multiplatform on korilin&#39;s blog</title>
    <link>https://korilin.com/tags/compose-multiplatform/</link>
    <description>Recent content in Compose Multiplatform on korilin&#39;s blog</description>
    <generator>Hugo -- 0.155.3</generator>
    <language>cn-zh</language>
    <lastBuildDate>Sat, 14 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://korilin.com/tags/compose-multiplatform/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Compose Multiplatform 下图片加载支持</title>
      <link>https://korilin.com/posts/compose-multiplatform-image/</link>
      <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://korilin.com/posts/compose-multiplatform-image/</guid>
      <description>&lt;p&gt;早期由于 Android 主要的社区图片组件库（例如 Glide、Coil）在 Google Jetpack Compose 的支持上还不算好，因此当时基于 Glide 做了一个 akit 的 Compose 图片支持库，主要用于处理社区图片库一些在 Compose 上不支持的问题和 bugfix&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可参考 &lt;a href=&#34;https://korilin.com/posts/compose-glide-image/&#34;&gt;《使用 Glide 在 Compose 中加载图片
》&lt;/a&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;随着公司基建的发展，开始对 Compose Multiplatform 进行支持，其中图片库就是其中的一个挑战：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CMP 的支持并非直接全迁移，而是迁移基础模块，业务模块保持纯 Android 模块和 iOS 模块，原生和 CMP 要求共用一套加载缓存与资源类型支持。Android 端还是使用 Glide 加载，iOS 侧主要使用 Coil，并预留打通 Kingfisher 缓存或直接接入 Kingfisher 的扩展能力。&lt;/li&gt;
&lt;li&gt;虽然可以直接 expect 图片组件，由两端各自实现，但由于类似于 &lt;code&gt;Modifier.asyncBackground&lt;/code&gt; 这类需要依赖 ModifierNode 测量和绘制逻辑的场景，expect 方案并无法直接套用原生 View 实现，因此最好的方式还是统一 Compose 节点定义与逻辑，仅抽象出平台加载图片的 engine（类似于 Ktor）&lt;/li&gt;
&lt;li&gt;社交业务的图片加载需要支持许多网络图片类型，包括 ninepatch 背景、gif、lottie 动画等，因此也需要在 CMP 侧同样支持这些类型的加载。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;从原本的纯-android-akit-库迁移到-cmp&#34;&gt;从原本的纯 Android Akit 库迁移到 CMP&lt;/h2&gt;
&lt;p&gt;在早期的 Android 版本里，图片加载主要是围绕 Glide 做 Compose 适配，核心目标是“让业务能在 Compose 里继续复用已有图片能力”，所以当时的重心是 UI 侧封装（例如统一的 NetImage）和加载时机控制。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
