ClassNotFoundException:未在 Android 9 上找到 class SchemeRegistry

ClassNotFoundException: Didn't find class SchemeRegistry on Android 9

我正在使用以下 OkHttp API 来设置 SSL Factory:

OkHttpClient.Builder.sslSocketFactory(sslContext.getSocketFactory(), x509TrustManager);

要获得 sslContext 我需要创建 SchemeRegistry:

SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https", new SslSocketFactory(sslContext), 443));

不过,这会导致以下崩溃:

ClassNotFoundException: Didn't find class "org.apache.http.conn.scheme.SchemeRegistry"

我该怎么做才能避免崩溃?

过时的 SchemeRegistry class 在 Android P 上不再可用。

如果您仍然 want/need 使用旧版 HTTP API,除了

useLibrary 'org.apache.http.legacy'

build.gradleandroid 部分,您还需要添加

    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />

到您的清单中的 <application> 标记。