由于最近一次Android应用程序更新,我遇到了ANR和崩溃问题,这些问题主要出现在运行Android 8的华为设备上。(我设法在Honor 7x,Android 8.0上重现ANR)。
这两个问题似乎联系在一起-我猜原因是相同的,但是在Android 8.0和Android 8.1上却有不同的结果。
关于原因:
但是,我在互联网上找不到与此问题相关的任何信息。 我想知道是否真的可以做任何事情,因为我无法访问该库,也没有任何线索,为什么这种情况几乎只发生在华为设备上。
我也正在与视频广告库的作者联系,但也许有人正在/已经解决了类似的问题。
Android 8.1崩溃的控制台日志
java.lang.RuntimeException:
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.newSsl (ConscryptFileDescriptorSocket.java:161)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.<init> (ConscryptFileDescriptorSocket.java:152)
at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:155)
at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:307)
at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:282)
at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:167)
at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:257)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:200)
at okhttp3.RealCall$AsyncCall.execute (RealCall.java:147)
at okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
at java.lang.Thread.run (Thread.java:784)
Caused by: javax.net.ssl.SSLException:
at com.android.org.conscrypt.NativeCrypto.SSL_new (NativeCrypto.java)
at com.android.org.conscrypt.SslWrapper.newInstance (SslWrapper.java:58)
at com.android.org.c`enter code here`onscrypt.ConscryptFileDescriptorSocket.newSsl (ConscryptFileDescriptorSocket.java:159)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.<init> (ConscryptFileDescriptorSocket.java:152)
at com.android.org`enter code here`.conscrypt.OpenSSLSocketFactoryImpl.createSocket (OpenSSLSocketFactoryImpl.java:155)
at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:307)
at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:282)
at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:167)
at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:257)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:200)
at okhttp3.RealCall$AsyncCall.execute (RealCall.java:147)
at okhttp3.internal.NamedRunnable.run (NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
at java.lang.Thread.run (Thread.java:784)
发布ANR日志可能不是很有用,还是那样?
答案 0 :(得分:0)
看起来像a similar bug reported against OkHttp,他们认为这是资源耗尽导致的,导致http无法打开文件句柄。
我猜视频广告库打开的文件过多,无法正常关闭,或类似的情况。听起来解决方案是使用具有更好代码的其他Ads库。