集成SendBird UIKit后OkHttp与Retrofit崩溃问题求助
SendBird集成已有React Native Android应用时的OkHttp崩溃问题
我在将SendBird集成到一个已有Android应用时遇到问题,该应用前端采用React Native,我在原生Android侧实现SendBird集成。已按照教程完成示例应用,但运行时出现OkHttp相关崩溃问题,问题出在调用SendbirdUIKit.init(new SendbirdUIKitAdapter())之后:
崩溃场景1:调用Retrofit接口时触发崩溃
FATAL EXCEPTION: OkHttp Dispatcher Process: com.***, PID: 17631 java.lang.ExceptionInInitializerError at okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion$factory$1.matchesSocket(ConscryptSocketAdapter.kt:58) at okhttp3.internal.platform.android.DeferredSocketAdapter.matchesSocket(DeferredSocketAdapter.kt:37) at okhttp3.internal.platform.Android10Platform.configureTlsExtensions(Android10Platform.kt:51) at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:375) at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337) at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209) at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226) at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.kt:221) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at com.***.APIHandler.lambda$get7BossClient$0(APIHandler.java:51) at com.***.APIHandler$$ExternalSyntheticLambda0.intercept(Unknown Source:2) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.conscrypt.Conscrypt$Version.major()' on a null object reference at okhttp3.internal.platform.ConscryptPlatform$Companion.atLeastVersion(ConscryptPlatform.kt:129) at okhttp3.internal.platform.ConscryptPlatform.<clinit>(ConscryptPlatform.kt:115) ... 28 more
崩溃场景2:打开SendBird的ChannelListActivity等页面时触发崩溃
FATAL EXCEPTION: OkHttp Dispatcher Process: com.seveneleven.rnd.tabasco.ris2, PID: 16711 java.lang.ExceptionInInitializerError at com.sendbird.android.shadow.okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion$factory$1.matchesSocket(ConscryptSocketAdapter.kt:58) at com.sendbird.android.shadow.okhttp3.internal.platform.android.DeferredSocketAdapter.matchesSocket(DeferredSocketAdapter.kt:37) at com.sendbird.android.shadow.okhttp3.internal.platform.Android10Platform.configureTlsExtensions(Android10Platform.kt:51) at com.sendbird.android.shadow.okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:375) at com.sendbird.android.shadow.okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:337) at com.sendbird.android.shadow.okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:209) at com.sendbird.android.shadow.okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226) at com.sendbird.android.shadow.okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) at com.sendbird.android.shadow.okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) at com.sendbird.android.shadow.okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) at com.sendbird.android.shadow.okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) at com.sendbird.android.shadow.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at com.sendbird.android.shadow.okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) at com.sendbird.android.shadow.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at com.sendbird.android.shadow.okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) at com.sendbird.android.shadow.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at com.sendbird.android.shadow.okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) at com.sendbird.android.shadow.okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at com.sendbird.android.shadow.okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) at com.sendbird.android.shadow.okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.conscrypt.Conscrypt$Version.major()' on a null object reference at com.sendbird.android.shadow.okhttp3.internal.platform.ConscryptPlatform$Companion.atLeastVersion(ConscryptPlatform.kt:129) at com.sendbird.android.shadow.okhttp3.internal.platform.ConscryptPlatform.<clinit>(ConscryptPlatform.kt:115) ... 23 more
推测原因与Gradle配置
我推测是SendBird UIKit自带的OkHttp3实现与本地依赖版本冲突,以下是我的Gradle配置:
implementation('com.squareup.retrofit2:retrofit:2.9.0') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } implementation('com.squareup.retrofit2:converter-gson:2.9.0') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.11.0' implementation group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '4.10.0' implementation("com.squareup.okhttp3:okhttp-urlconnection:4.9.2") implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.11.0' implementation group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '4.10.0' implementation("com.squareup.okhttp3:okhttp-urlconnection:4.9.2")
内容的提问来源于stack exchange,提问作者Jeff Hatfield
相关产品推荐
相关产品推荐

