
android 9.0(api 28)起默认禁止明文流量,导致 glide 无法加载 http 图片;需在 androidmanifest.xml 中显式启用 cleartext traffic 才能正常加载。
在现代 Android 开发中,出于网络安全考虑,系统自 Android 9.0(API 级别 28)起默认禁用明文网络流量(即 HTTP 协议),仅允许 HTTPS 请求。因此,当你使用 Glide 加载形如 http://example.com/image.jpg 的图片时,即使代码无误、网络权限已声明,图片仍会加载失败且无明显报错——这是系统级限制,而非 Glide 本身的问题。
✅ 正确解决方案是在 AndroidManifest.xml 的
android:usesCleartextTraffic="true"
同时确保已声明互联网权限(通常已在 manifest 中存在):
<uses-permission android:name="android.permission.INTERNET" />
完整示例(关键部分高亮):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"> <!-- ✅ 必须添加 -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>⚠️ 注意事项:
- 该配置仅适用于调试或特定业务场景(如内网 HTTP 服务)。生产环境强烈建议升级为 HTTPS,以保障数据传输安全与合规性;
- 若目标 API 级别 ≥ 31(Android 12),还需额外检查是否启用了 android:exported 属性(针对有 intent-filter 的组件),但此与 cleartext 无关;
- Glide 本身无需额外配置(如自定义 OkHttpClient)即可支持 HTTP,前提是系统允许明文流量。
? 补充建议:
若项目支持 Android 7.0+,更健壮的做法是通过 network_security_config.xml 精细化控制(例如仅对特定域名允许 HTTP),而非全局开启 usesCleartextTraffic。但对简单场景,上述配置已足够高效可靠。
总之,HTTP 图片加载失败不是 Glide 的 Bug,而是 Android 安全策略的体现——理解并合理配置 android:usesCleartextTraffic,是解决该问题的关键一步。










