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

Android设备配置Charles代理后出现网络连接丢失问题

解决Android 8.0(S8)上Charles代理网络丢失问题

针对你遇到的问题,核心原因是Android 8.0(API 26)引入了证书信任机制的变更:用户手动安装的CA证书默认不再被系统应用和绝大多数第三方应用信任,这就导致你配置了代理后,应用无法通过Charles的证书建立安全连接,最终出现网络丢失的情况。下面是具体的解决方案,你可以根据自己的情况选择:

方案1:将Charles证书安装为系统证书(需要Root权限)

如果你的S8已经获取Root权限,这是最彻底的解决方式,所有应用都会信任Charles的证书:

    1. 在Charles中导出根证书:点击 Help -> SSL Proxying -> Save Charles Root Certificate,选择PEM格式保存到电脑。
    1. 计算证书的哈希值:使用命令 openssl x509 -inform PEM -subject_hash_old -in charles.pem | head -1,得到一个8位的哈希值(比如9a5ba575)。
    1. 重命名证书:把刚才导出的PEM文件重命名为[哈希值].0(比如9a5ba575.0)。
    1. 将证书推送到设备:通过ADB命令 adb push 9a5ba575.0 /system/etc/security/cacerts/,然后修改权限 adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0。
    1. 重启设备,之后所有应用都会信任Charles的证书,代理网络即可正常使用。

方案2:针对自定义应用配置网络安全策略(无需Root)

如果你只是需要调试自己开发的应用,可以通过配置应用的网络安全规则来信任用户安装的证书:

    1. 在应用的res/xml目录下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <!-- 信任系统默认证书 -->
            <certificates src="system" />
            <!-- 信任用户安装的证书 -->
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>
    1. 在AndroidManifest.xml的application标签中添加引用:
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config">
    ...
</application>

重新编译安装应用后,该应用就会信任你安装的Charles证书,代理可以正常工作。

额外排查点

除了证书信任问题,你还可以检查以下内容:

  • 确认你的S8和运行Charles的电脑处于同一局域网,并且电脑的防火墙没有阻止Charles的端口(默认8888)。
  • 在Charles中检查Proxy -> Access Control Settings,确保已经添加了你的S8设备IP地址,允许设备连接。
  • 再次核对WiFi代理设置:主机名是电脑的局域网IP,端口是Charles的监听端口(默认8888),没有填写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:20:03