java - Okhttp.Builder 中的 ExceptionInInitializerError w/Multidex & Kitkat

标签 java android retrofit2 okhttp

我在运行启用了 Multidex 的 Kitkat 4.4.2 的 VM 上遇到了 ExceptionInInitializerError 异常。

java.lang.ExceptionInInitializerError
    at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
    at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
    at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015)
    at myapp.utils.Utils.getHttpClientBuilder(Utils.java:131)
    at myapp.fragments.FragmentHome.getHome(FragmentHome.java:326)
    at 
myapp.fragments.FragmentHome.onViewCreated(FragmentHome.java:135)

我有以下库:

implementation 'jp.wasabeef:recyclerview-animators:3.0.0'
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.ogaclejapan.smarttablayout:utils-v4:2.0.0@aar'
implementation 'com.duolingo.open:rtl-viewpager:1.0.3'
implementation 'com.squareup.retrofit2:retrofit-converters:2.5.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.1'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.karumi:dexter:5.0.0'
implementation 'com.nineoldandroids:library:2.4.0'
implementation 'org.jsoup:jsoup:1.11.3'
implementation 'saschpe.android:customtabs:2.0.0'

我正在使用这段代码创建改造连接

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_LINK)
            .addConverterFactory(GsonConverterFactory.create())
            .client(Utils.getHttpClientBuilder())
            .build();

并使用此代码获取生成器的实例

public static OkHttpClient getHttpClientBuilder(){
    return new OkHttpClient.Builder()
            .readTimeout(60, TimeUnit.SECONDS)
            .connectTimeout(60, TimeUnit.SECONDS)
            .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
            .build();
}

getHttpClientBuilder() 方法中调用“build()”时发生异常。

我还在 AndroidManifest.xml 中分配了一个默认应用程序,它扩展了 MultiDexApplication 并且在 onCreate(Bundle bundle )

该问题仅发生在 Kitkat 中。任何想法为什么?我试过降级 Okhttp 库并将其升级到最新版本,但没有成功。

编辑:

从 Retroft 构建器中删除客户端不会改变任何内容。错误仍然显示。

最佳答案

OkHttp 3.13+ 需要 Android 5+

square/okhttp github页面提到最低要求是Android 5+

Github link

Medium link

如@Jaeger 所述,@fancyjyl 与低于 Android 5 的版本一起使用,我们需要使用 OkHttp 3.12.x,但不建议使用它。

关于java - Okhttp.Builder 中的 ExceptionInInitializerError w/Multidex & Kitkat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55992760/

相关文章:

java - 如何在 Groovy JsonSlurper 中维护 JSON 顺序?

java - Hibernate一对多问题

android - 使用 Toolbar 和 SwipeRefreshLayout 的正确方法是什么?

Android:如何使用Retrofit获取 session ID?

java - 如何使用 JavaScript 处理 Java 对象序列化?

android - CSS 触摸 Action : not always disabling in Cordova app

android - 如何设置限制从Android上传图片到数据库MySQL

java - 如何在一个 Activity 中将 addOnScrollListener 与不同的列表一起使用

java - 对本地主机服务器的简单 retrofit2 请求

java - 我可以将 NativeFileSystemStore 作为插件提供给 Hadoop 吗?