Android 12 Unable to extract the trust manager on Android10Platform

java.lang.IllegalStateException: Unable to extract the trust manager on Android10Platform, sslSocketFactory is class com.android.org.conscrypt.OpenSSLSocketFactoryImpl
2024-04-01 17:56:38.044 23697-25362 System.err              com.xxx.           W  	at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.kt:810)
2024-04-01 17:56:38.044 23697-25362 System.err               com.xxx.          W  	at  com.xxx..http.HttpHelper.getClient(HttpHelper.java:73)
2024-04-01 17:56:38.044 23697-25362 System.err               com.xxx.          W  	at  com.xxx..http.HttpHelper.doRequest(HttpHelper.java:110)

1.最近由于升级Android Studio以及 sdk版本 导致上传报告使用okhttp报错如上面代码所示,于是我查看源码分析一波发现问题出现在 在 OkHttpClient 构建方法中 于是尝试修改代码

2.修改之前代码

    /**
     * get okhttpclient
     * @param timeOutMs         time out ms
     * @return                  OkHttpClient
     */
    public static OkHttpClient getClient(long timeOutMs) {
        OkHttpClient.Builder mBuilder = new OkHttpClient.Builder();
        mBuilder.sslSocketFactory(createSSLSocketFactory());
        mBuilder.hostnameVerifier(new TrustAllHostnameVerifier());
        mBuilder.readTimeout(timeOutMs, TimeUnit.MILLISECONDS);
        mBuilder.connectTimeout(timeOutMs, TimeUnit.MILLISECONDS);
        mBuilder.writeTimeout(timeOutMs, TimeUnit.MILLISECONDS);

        OkHttpClient client = mBuilder.build();
        return client;
    }

3.修改后代码

 /**
     * get okhttpclient
     *
     * @param timeOutMs time out ms
     * @return OkHttpClient
     */
    public static OkHttpClient getClient(long timeOutMs) {
        try {
            // Create a trust manager that does not validate certificate chains
            final TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        }

                        @Override
                        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        }

                        @Override
                        public X509Certificate[] getAcceptedIssuers() {
                            return new X509Certificate[]{};
                        }
                    }
            };

            // Install the all-trusting trust manager
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
            // Create an ssl socket factory with our all-trusting manager
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

//            okhttp3.OkHttpClient.Builder builder = new OkHttpClient.Builder();
//            builder.sslSocketFactory(sslSocketFactory);
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.sslSocketFactory(sslSocketFactory, new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                @Override
                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                }

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return new X509Certificate[0];
                }
            });
            builder.hostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });

            OkHttpClient okHttpClient = builder.build();
            builder.readTimeout(timeOutMs, TimeUnit.MILLISECONDS);
            builder.connectTimeout(timeOutMs, TimeUnit.MILLISECONDS);
            builder.writeTimeout(timeOutMs, TimeUnit.MILLISECONDS);
            return okHttpClient;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        } catch (KeyManagementException e) {
            throw new RuntimeException(e);
        }
    }

4、到这里基本结束,只是简单记录下,后续有其他同学遇到这个坑这样解决就行。

感谢

runtime error - Vimeo Networking Library Crash for Android 10 platform (api29) - Stack Overflow

转载请注明出处Android 12 Unable to extract the trust manager on Android10Platform-CSDN博客,谢谢!

相关推荐

  1. FAQ for ASAN on Android10/Android11/Android12/8155/8295

    2024-04-02 08:02:02       9 阅读
  2. Android 10-13,默认屏幕亮度80%或100%

    2024-04-02 08:02:02       33 阅读
  3. Android 10 Android音量调节

    2024-04-02 08:02:02       27 阅读
  4. Android10 Dialog bug

    2024-04-02 08:02:02       33 阅读
  5. Android 12 Token 机制

    2024-04-02 08:02:02       29 阅读
  6. Android12 关机流程

    2024-04-02 08:02:02       40 阅读
  7. Android 12 SystemUI调试

    2024-04-02 08:02:02       19 阅读
  8. android:elevation=“10dp“

    2024-04-02 08:02:02       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 08:02:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 08:02:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 08:02:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 08:02:02       20 阅读

热门阅读

  1. golang开发类库推荐

    2024-04-02 08:02:02       15 阅读
  2. MetaGPT部分源码解读--Memory

    2024-04-02 08:02:02       14 阅读
  3. 如何在mysql中生成类似oracle中的rownum行号?

    2024-04-02 08:02:02       15 阅读
  4. Gauss到底是不是国产数据库

    2024-04-02 08:02:02       14 阅读
  5. Windows Server设置NTP服务器

    2024-04-02 08:02:02       20 阅读
  6. 如何反反爬虫

    2024-04-02 08:02:02       13 阅读
  7. Docker环境安装Postgresql数据库Posrgresql 15.6

    2024-04-02 08:02:02       14 阅读