最近の Android アプリの更新以来、主に Android 8 を実行している Huawei デバイスで発生する ANR とクラッシュの問題に直面しています (Honor 7x、Android 8.0 で ANR を再現することができました)。
- Google Play Console Logs によると、クラッシュは Android 8.1 でのみ発生し、Huawei デバイスでは 93% 発生します。
- 一方、ANR (これも主に Huawei デバイスで発生) は Android 8.1 では発生しませんが (上記のクラッシュのように)、Android 8.0 でほぼ例外なく発生します。
2 つの問題は関連しているようです。原因は同じだと思いますが、Android 8.0 と Android 8.1 では結果が異なります。
原因について:
- 最近、動画広告ライブラリ ( https://www.teads.tv/ ) がアプリに追加されましたが、それが問題を引き起こしていると思います。
- これらの広告を読み込まなくても、クラッシュは発生しません。
ただし、インターネット上でこの問題に関連するものは見つかりませんでした。ライブラリにアクセスできず、手がかりもないので、これについて実際に何かできるとしたら、なぜこれがほとんどHuaweiデバイスでのみ発生するのか疑問に思っています.
動画広告ライブラリの作成者にも連絡していますが、誰かが同様の問題に直面している、または解決した可能性があります。
Android 8.1-Crash のコンソール ログ
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 ログを投稿することは、おそらくあまり役に立たないでしょうか?