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

Expo开发Android应用:生产环境远程图片加载失败求助

问题:Expo开发Android应用打包AAB后远程图片无法加载

开发环境下,从Google Books等API获取的远程图片能正常加载,但生成发布用的.aab文件后,远程图片完全无法显示。图书标题、ID等API返回的其他内容显示正常,说明API调用功能正常,仅远程图片加载异常;本地图片加载无任何问题,该问题从开发初期就存在。

已尝试的方案

  • 使用Expo-Images等第三方图片库,无效
  • 实现图片缓存逻辑,代码如下:
async function cacheImages(images) {
  const imageAssets = images.map(image => {
    if (typeof image === 'string') {
      return Image.prefetch(image);
    } else {
      return Asset.fromModule(image).downloadAsync();
    }
  });

  await Promise.all(imageAssets);
}
  • 对照Expo文档检查图片加载代码,当前代码为:
<Image source={{ uri: bookImage }} style={styles.image} />

环境信息

  • Expo CLI版本:>= 7.5.0
  • Expo SDK版本:~50.0.15

解决思路/排查方向

  • 检查网络权限:确认app.json的android.permissions数组中是否包含INTERNET权限,Expo 48+之后默认不会自动添加该权限,需手动声明
  • HTTP请求限制:Android 9及以上默认禁止HTTP明文请求,若Google Books返回的图片URL是HTTP协议,需在app.json的android.androidManifest中添加android:usesCleartextTraffic="true"配置
  • 图片URL有效性:将打包后无法加载的图片URL复制到浏览器中打开,确认URL是否有效(部分API返回的URL带有临时签名,可能因发布版请求环境导致失效)
  • 替换图片组件:尝试使用expo-image替代官方Image组件,确保安装对应适配Expo 50的版本,该组件对远程图片的加载兼容性更好
  • 排查缓存逻辑:暂时移除图片预取缓存代码,直接使用Image组件加载,看是否能正常显示;若必须用缓存,检查发布版中缓存目录的读写权限
  • ProGuard混淆检查:若开启了ProGuard,需确认proguard-rules.pro中是否添加了Expo图片加载相关的防混淆规则,避免核心类被混淆导致加载失败
  • 查看打包日志:执行eas build时仔细查看日志输出,寻找与图片加载、权限、资源相关的警告或错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:12:43