React Native签名APK登录出现网络错误,Metro打包正常求助
网络权限缺失:Debug版本通常默认授予网络权限,但Release版本必须在
AndroidManifest.xml中显式声明:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />若目标接口使用明文HTTP(非HTTPS),Android 9及以上默认拦截此类请求,需在
res/xml/network_security_config.xml中配置允许明文访问,或切换为HTTPS协议。SSL证书验证失败:Debug模式下可能临时关闭了SSL验证(如Axios设置
rejectUnauthorized: false),但Release模式会严格校验证书有效性。如果后端证书未被系统信任、证书链不完整或域名不匹配,都会触发网络错误。需确认后端证书合规,或针对Release环境配置正确的证书信任策略。代码混淆破坏网络模块:Release构建开启ProGuard/R8混淆后,可能篡改Axios、OkHttp等网络库的核心代码,导致请求无法正常发送。需在
proguard-rules.pro中添加保护规则:-keep class com.facebook.react.modules.network.** { *; } -keep class com.axios.** { *; } -keep class okhttp3.** { *; } -keep class okio.** { *; }环境配置错误:Debug模式可能使用测试环境API地址,但Release构建时未切换到生产环境URL,或环境变量未正确注入包内。检查
build.gradle或项目配置文件,确认Release版本的Base URL正确。后端证书指纹白名单限制:部分后端服务会校验请求来源的APK签名指纹,若Release包的签名指纹未加入后端白名单,请求会被拒绝。此时Axios可能将HTTP错误(如403)误判为网络错误。通过
keytool -list -v -keystore your-release-key.keystore获取Release证书指纹,添加到后端白名单即可。网络安全配置限制:Release模式下的
network_security_config.xml可能存在域名访问限制,需确认配置中允许目标API域名的访问。Axios错误处理逻辑偏差:检查Axios的错误捕获代码,是否将HTTP状态码错误(如401、404)当成网络错误抛出。可在Release版本中添加详细日志,打印
error.response、error.request和error.message,明确错误类型。
内容的提问来源于stack exchange,提问作者Ali Asad Jafry

