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

Cordova Android正式包Ajax请求失效(调试包、iOS端均正常)

可尝试的解决方向

  • 检查Release构建的混淆规则配置
    该问题仅出现在Release包,大概率是ProGuard/R8压缩混淆时误删了Ajax请求相关的Cordova插件类/方法。在你的proguard-rules.pro文件中添加以下保留规则:
    # 保留Cordova核心类
    -keep class org.apache.cordova.** { *; }
    # 保留你所用的Ajax/网络请求插件对应的类,比如如果用的是cordova-plugin-advanced-http:
    -keep class com.communote.plugin.httpplugin.** { *; }
    # 保留JS接口对应的注解类
    -keepclassmembers class * {
        @org.apache.cordova.JavascriptInterface <methods>;
    }
    -keepattributes JavascriptInterface
    
  • 修复Let's Encrypt证书在旧安卓系统的信任链问题
    Android 7.0以下系统默认不信任Let's Encrypt的ISRG Root X1根证书,你测试用的Android 6.0.1正好在这个区间。虽然你验证过证书有效,但旧系统识别不到新根证书,Release包下不会走调试阶段的宽松证书校验规则。解决方案:
    1. 把ISRG Root X1证书内置到APP的网络安全配置中
    2. 或者在后端证书链配置中兼容旧根证书,不要只返回默认的短链
  • 检查Cordova WebView的设置差异
    部分Cordova版本在Release构建时会默认开启WebView的安全限制,你可以在主Activity的onCreate方法中手动添加WebView配置:
    WebView webView = (WebView) appView.getView();
    WebSettings webSettings = webView.getSettings();
    webSettings.setDomStorageEnabled(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setJavaScriptEnabled(true);
    // 关闭Release模式下默认开启的混合内容限制
    webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
    
  • 排查证书锁定相关配置
    检查你的项目中有没有配置证书锁定(Certificate Pinning)的相关代码或者插件,Release包如果开启了证书锁定但配置的证书指纹不对,也会直接拦截HTTPS请求。
  • 临时开启Release包的调试权限定位问题
    在AndroidManifest的application节点添加android:debuggable="true",打Release包后连接Chrome调试工具看Network面板的请求具体报错信息,比盲调效率高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:03