React Native 0.65.1打包APK后无法调用API,添加usesCleartextTraffic=true无效
React Native 0.65.1 打包APK后无法发起API请求的解决方案
核对API地址准确性
确认打包时使用的baseURL不是本地测试IP(比如192.168.x.x),这种地址在真机上无法访问,要换成公网可访问的地址或对应环境的正确域名。配置Android网络安全文件
仅添加android:usesCleartextTraffic="true"可能无法覆盖Android 9+的限制,需额外配置网络安全文件:- 在
android/app/src/main/res/xml目录下创建network_security_config.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> <certificates src="user" /> </trust-anchors> </base-config> </network-security-config>- 在
AndroidManifest.xml的application标签中引用该配置:
android:networkSecurityConfig="@xml/network_security_config"- 在
调整ProGuard混淆规则
Release版本打包时,ProGuard可能混淆网络请求相关类,导致请求失败。在android/app/proguard-rules.pro中添加以下规则:# 保留OkHttp相关类 -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -keep class okio.** { *; } # 保留Retrofit(若使用) -keep class retrofit2.** { *; } -keep interface retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions # 保留自身API接口类(替换为实际包名) -keep class com.yourpackage.api.** { *; }确认网络权限已添加
检查AndroidManifest.xml中是否包含必要的网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />禁用Flipper(默认集成的调试工具)
React Native 0.65默认集成的Flipper可能干扰Release版本的网络请求,需移除相关代码:- 在
android/app/src/main/java/com/yourapp/MainApplication.java中注释掉Flipper相关的导入和初始化代码; - 在
android/app/build.gradle中注释掉Flipper的依赖项。
- 在
测试真机网络环境
用手机浏览器直接访问API地址,确认服务器可正常响应,同时确保真机与API服务器处于可互通的网络环境(内网API需同网段,公网API需真机有正常外网权限)。
内容的提问来源于stack exchange,提问作者Midhun
相关产品推荐
相关产品推荐

