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

Cordova 11.1.0签名应用HTTPS请求失败问题求助

问题描述

基于Cordova 11.1.0开发的应用,调试APK可正常通过HTTPS连接服务器,但签名后的APK无法建立连接。已尝试两种签名打包流程:

  1. 先执行cordova build android --release生成.aab,再用bundletool生成通用APK:
java -jar bundletool.jar build-apks --mode universal --bundle=app-release.aab --output=App.apks --ks=app.keystore --ks-pass=pass:XXXXXX --ks-key-alias=XXXX

解压后安装APK,问题依旧。
2. 直接用命令打包签名APK:

cordova run android --release -- --keystore=xxxxx.keystore --storePassword=xxxxxx --alias=xxxxx --password=xxxxx --packageType=apk

问题仍未解决。

已修改config.xml配置如下,但无改善:

<preference name="android-minSdkVersion" value="29" />
<preference name="AndroidXEnabled" value="true" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="scheme" value="https" />
<preference name="hostname" value="my.host" />

<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
排查方案

1. 验证服务器SSL证书信任性

调试APK默认会放宽证书校验规则,但签名后的正式APK仅信任系统根证书库中的证书:

  • 确认服务器使用的是受信任CA颁发的证书,而非自签名证书;
  • 如果是自签名证书,需在res/xml/network_security_config.xml中配置信任该证书:
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="false">
            <domain includeSubdomains="true">my.host</domain>
            <trust-anchors>
                <certificates src="@raw/your_self_signed_cert" />
                <certificates src="system" />
            </trust-anchors>
        </domain-config>
    </network-security-config>
    
    然后在AndroidManifest.xml的application标签中添加android:networkSecurityConfig="@xml/network_security_config",并将证书文件放入res/raw目录。

2. 检查R8/ProGuard混淆影响

Cordova 11.1.0默认启用R8混淆,签名打包时可能破坏网络请求相关代码:

  • 在proguard-rules.pro中添加网络相关保留规则:
    # 保留OkHttp相关类(若使用对应插件)
    -keep class okhttp3.** { *; }
    -keep interface okhttp3.** { *; }
    # 保留Cordova网络核心类
    -keep class org.apache.cordova.networkinformation.** { *; }
    -keep class org.apache.cordova.core.** { *; }
    # 保留自定义网络业务类
    -keep class com.yourpackage.network.** { *; }
    
  • 可暂时关闭混淆,测试签名APK是否能正常连接,确认是否是混淆导致问题。

3. 确认签名文件有效性

  • 执行命令检查签名文件信息,确认别名、密码正确且未过期:
    keytool -list -v -keystore app.keystore
    
  • 验证签名后的APK是否使用了正确的签名文件:
    apksigner verify -v App.apks/universal.apk
    

4. 检查Cordova网络配置生效情况

  • 确认config.xml中的scheme和hostname与服务器域名完全匹配;
  • 添加网络权限与导航规则到config.xml:
    <access origin="https://my.host/*" />
    <allow-navigation href="https://my.host/*" />
    
  • 检查AndroidManifest.xml是否正确合并了usesCleartextTraffic配置(虽不影响HTTPS,但可确认配置流程是否正常)。

5. 抓取网络日志定位根源

通过adb抓取签名APK的网络相关日志,查看具体错误:

adb logcat | grep -i "ssl\|http\|network"

重点关注SSL握手失败、证书验证错误等关键词,直接定位问题原因。

6. 检查Android版本兼容性

因设置minSdkVersion=29,需确认:

  • 服务器TLS版本支持Android 10及以上(至少TLS 1.2);
  • 服务器未禁用Android 10支持的加密套件,导致无法协商加密连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:14:56