【问题标题】:Coil don't load image in emulator with Jetpack Compose线圈不使用 Jetpack Compose 在模拟器中加载图像
【发布时间】:2021-07-30 00:49:34
【问题描述】:

我需要使用 Coil 通过 url 在我的应用程序中显示图像,但无法加载此图像。我按照官方文档https://coil-kt.github.io/coil/compose/.

profile card

implementation "io.coil-kt:coil-compose:1.3.1"
@Composable
fun ProfilePicture(profilePicture: String, online: Boolean) {
    Card(
        shape = CircleShape,
        border = BorderStroke(
            width = 2.dp,
            color = if (online) MaterialTheme.colors.lightGreen else Color.Red
        ),
        modifier = Modifier.padding(16.dp),
        elevation = 4.dp
    ) {
        Image(
            painter = rememberImagePainter(
                data = profilePicture,
                builder = {
                    transformations(CircleCropTransformation())
                }
            ),
            modifier = Modifier.size(72.dp),
            contentDescription = "Profile picture"
        )
    }
}

更新

UserModel 示例

UserModel(
    name = "John Doe",
    profilePicture = "https://randomuser.me/api/portraits/men/32.jpg",
    online = true
)

【问题讨论】:

  • 你可以尝试在里面放一个静态网址,这样你就可以确定线圈是问题所在
  • 请提供一个无效的profilePicture 示例
  • 我用 UserModel 示例更新了我的问题。
  • @Philip 感谢您的反馈。我在物理设备上测试它并且工作正常,但在我所有的模拟器版本上都不起作用
  • @GustavoFaria,我和你有同样的问题:模拟器中没有加载图像,但在真实设备上可以正常工作。

标签: android android-jetpack-compose coil


【解决方案1】:

Coil 不会在模拟器上加载图片,因为你需要开启明文流量,将此行添加到AndroidManifest.xml 中的应用程序标签中。

android:usesCleartextTraffic="true"

然后从你的模拟器中卸载应用程序并重新安装它,它会工作。

【讨论】:

  • 这只会减轻症状(如果您只想快速测试某些东西,这可能就足够了),但不能解决问题的原因。在我的情况下,模拟器上设置的日期/时间错误,导致证书过期。
【解决方案2】:

我有同样的问题,只发生在模拟器上。 关闭移动数据,同时启用 Wi-Fi 解决了我的问题。

【讨论】:

  • 模拟器 WiFi 无法访问互联网。你是怎么做到的?
【解决方案3】:

在模拟器上检查您的日期/时间。

问题可能是由于 Android 模拟器似乎没有与网络同步日期和时间。这会使模拟器证书显示为过期并导致服务器拒绝连接。

手动将模拟器时间/日期设置为当前时间/日期后,下载图像开始为我工作。

冷启动模拟器也可能会有所帮助(看起来从保存的图像启动由于某种原因将日期/时间设置为保存图像时的日期/时间)。

【讨论】:

    猜你喜欢
    • 2022-07-03
    • 2021-10-26
    • 2022-12-06
    • 2022-08-09
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多