You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose集成Coil 2.1.0时AsyncImage无法加载图片

问题根因

传给Coil的图片地址字段用错了。
查看接口返回对应的Photo实体类,包含两个链接字段:

  • url:对应图片的详情网页地址,不是可直接渲染的图片资源直链
  • download_url:才是可以直接访问加载的图片源地址
    当前代码中rememberAsyncImagePainter(photo.url)传入的是网页地址,Coil请求拿到的是HTML页面内容,无法解析为图片资源,所以无论用AsyncImage还是rememberAsyncImagePainter方案、哪怕硬编码该字段值都无法正常加载图片。
修复方案
  • 替换加载字段
    修改PhotoCard.kt中的图片加载逻辑,将入参替换为download_url字段:
@Composable
fun PhotoCard(photo: Photo, ... ) {
    ...
    Image(
        painter = rememberAsyncImagePainter(photo.download_url),
        contentDescription = "作者:${photo.author}的摄影作品"
        // 若使用AsyncImage组件同理,model参数传入photo.download_url即可
        ...
    )
}
  • 核对依赖配置
    如果替换字段后仍无法加载,检查模块级build.gradle中的Coil依赖,确保引入了完整的Compose适配包,2.1.0版本对应依赖配置为:
implementation "io.coil-kt:coil-compose:2.1.0"

不要仅引入基础Coil依赖而遗漏Compose适配包。

  • 特殊场景排查
    接口返回的图片地址为HTTPS协议,正常不需要额外配置;如果本地调试时使用了HTTP开头的地址,需要在AndroidManifest.xml的application标签下添加android:usesCleartextTraffic="true",否则Android 9及以上系统会默认拦截明文HTTP请求。

你已经正确配置了INTERNET网络权限,完成上述字段替换后即可正常加载列表图片。

内容的提问来源于stack exchange,提问作者kc_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:33:25