ClassNotFoundException:在 Android 9 上找不到类 SchemeRegistry

Mar*_*Bro 2 android classnotfoundexception okhttp3 android-9.0-pie

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

OkHttpClient.Builder.sslSocketFactory(sslContext.getSocketFactory(), x509TrustManager);
Run Code Online (Sandbox Code Playgroud)

为了得到sslContext我需要创建SchemeRegistry

SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https", new SslSocketFactory(sslContext), 443));
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下崩溃:

ClassNotFoundException: Didn't find class "org.apache.http.conn.scheme.SchemeRegistry"
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*Bro 6

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

如果您仍然想要/需要使用旧的 HTTP API,除了

useLibrary 'org.apache.http.legacy'
Run Code Online (Sandbox Code Playgroud)

在 的android部分build.gradle,您还需要添加

    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />
Run Code Online (Sandbox Code Playgroud)

<application>在你的清单标签。