语境
我正在尝试使用网络插件将Flipper 调试工具包含到我的应用程序中。为了使它有用,我需要在我的 HTTP 模块中添加一个 Flipper Network 拦截器,它提供一个 OkHttp 客户端供我的应用程序使用。我只在调试配置中包含 Flipper 库。我在我的 http 模块中包含了 Flipper deps,如下所示:
dependencies {
[...]
debugImplementation dep('com.facebook.flipper:flipper')
debugImplementation dep('com.facebook.flipper:flipper-network-plugin')
}
Run Code Online (Sandbox Code Playgroud)
问题
我面临的问题是Flipper 传递依赖okhttp:3.14.1',并且我们的应用程序支持高达 API 级别 16 的客户端。现在的问题是,在 API 21 (Lolipop) 以下,我无法使用 3.12.x 以上的任何版本的 okhttp。
正因为如此,其他依赖OkHttp的东西,开始使用OkHttp8.12.x以上的版本,这使得HTTP的初始化中断。
11-08 13:48:28.394 E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: java.util.Objects
at okhttp3.CertificatePinner.withCertificateChainCleaner(CertificatePinner.java:231)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:238)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:202)
Run Code Online (Sandbox Code Playgroud)
查看依赖关系树,在我看来,因为 Flipper 需要 OkHttp 版本 3.14.1,所以我的应用程序中在调试配置中需要 OkHttp 客户端的其他部分也使用 3.14.1 而不是 3.12.3:
debugAndroidTest
[...]
+--- project :libs:http-retrofit
| +--- project …Run Code Online (Sandbox Code Playgroud)