Android 应用程序的不可调试风格的 Charles 代理

Charles proxy in non debuggable flavour of Android app

首先让我澄清一下,我知道这是一个非常糟糕的做法,我不会将此更改推送到我的生产代码中。但有时我们需要调试我的应用程序不可调试风格的一些更改,但所有 https url 都失败并出现以下错误

Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)

我使用了以下网络配置文件并添加到我的清单文件中。这在应用程序的可调试风格中有效,但在不可调试的风格中仍然无效。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

有什么方法可以让我在 android 应用程序的不可调试风格中使用 charles 监控我的网络调用?

在创建需要使用 Charls 进行调试的发布版本时,在应用程序上下文中的清单中。请在之后添加 android:debuggable="true" 尝试构建您的发布版本并尝试使用 Charls 进行调试。 我没有尝试过,但这可能有效。根据以下link。 https://developer.android.com/training/articles/security-config.html

这个适合我:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="user" />
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Source