Glide无法加载网络图片,报HttpException及GeneratedAppGlideModule缺失错误求助
Glide加载网络图片失败:HttpException(status code: -1) 及GeneratedAppGlideModule警告解决
一、处理GeneratedAppGlideModule警告
该警告是Glide 4.x的注解处理器机制要求,虽不直接导致加载失败,但会影响自定义配置生效,解决步骤如下:
- 创建自定义AppGlideModule类:
import com.bumptech.glide.annotation.GlideModule import com.bumptech.glide.module.AppGlideModule @GlideModule class MyAppGlideModule : AppGlideModule()
- 修正依赖配置:
- Kotlin项目使用
kapt替代annotationProcessor:implementation 'com.github.bumptech.glide:glide:4.14.2' kapt 'com.github.bumptech.glide:compiler:4.14.2' - Java项目保留
annotationProcessor即可。
- Kotlin项目使用
- 执行Clean Project + Rebuild Project,触发注解处理器生成对应配置类。
二、解决HttpException(status code: -1)加载失败问题
状态码-1并非标准HTTP状态码,核心原因是Glide无法建立网络连接或获取数据,按优先级排查:
1. Android 9+明文HTTP限制(最可能原因)
目标URL为http://开头,而Android 9(API 28)及以上默认禁止明文HTTP请求,需配置网络安全策略:
- 在
res/xml目录下创建network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">flowrspot.s3.amazonaws.com</domain> </domain-config> </network-security-config>
- 在
AndroidManifest.xml的<application>标签中引用:
android:networkSecurityConfig="@xml/network_security_config"
(测试环境可临时添加android:usesCleartextTraffic="true",正式环境不推荐)
2. 检查网络权限
确保AndroidManifest.xml中已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
3. 排除代理/网络环境问题
- 调试时若使用代理,确认代理配置正确,或关闭代理重试;
- 用设备浏览器直接访问目标URL,验证网络环境是否能正常获取资源。
4. 替换Glide网络客户端
若默认HttpUrlConnection无法工作,可集成OkHttp作为网络客户端:
- 添加依赖:
implementation 'com.github.bumptech.glide:okhttp3-integration:4.14.2'
- 在自定义AppGlideModule中配置:
@GlideModule class MyAppGlideModule : AppGlideModule() { override fun registerComponents(context: Context, glide: Glide, registry: Registry) { val okHttpClient = OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .build() registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(okHttpClient)) } }
内容的提问来源于stack exchange,提问作者Kratos
相关产品推荐
相关产品推荐

