遇到具有以下细节的 ANR,
设备:OPPO A93
安卓操作系统版本:11
ANR 日志:
#00 pc 000000000007590c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#00 pc 00000000001b067c /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
#00 pc 0000000000673458 /apex/com.android.art/lib64/libart.so (art::GoToRunnable(art::Thread*)+480)
#00 pc 0000000000673234 /apex/com.android.art/lib64/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+28)
at android.os.BinderProxy.transactNative (BinderProxy.java)
at android.os.BinderProxy.transact (BinderProxy.java:568)
at android.media.IAudioService$Stub$Proxy.getStreamVolume (IAudioService.java:2748)
at android.media.OppoBaseAudioManager.oppoGetStreamVolume (OppoBaseAudioManager.java:148)
at android.media.AudioManager.getStreamVolume (AudioManager.java:1092)
at com.google.ads.interactivemedia.v3.internal.aio.a (aio.java:21)
at com.google.ads.interactivemedia.v3.internal.aio.a (aio.java:42)
at com.google.ads.interactivemedia.v3.internal.akl.a (akl.java:94)
at com.google.ads.interactivemedia.v3.internal.ako.b (ako.java:20)
at com.google.ads.interactivemedia.v3.internal.akm.shouldOverrideUrlLoading (akm.java:6)
at android.webkit.WebViewClient.shouldOverrideUrlLoading (WebViewClient.java:83)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading (AwContentsClientBridge.java:14)
at android.os.MessageQueue.nativePollOnce (MessageQueue.java)
at android.os.MessageQueue.next (MessageQueue.java:339)
at android.os.Looper.loop (Looper.java:198)
at android.app.ActivityThread.main (ActivityThread.java:8199)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049)
根据线程转储日志,当 IMA 使用 getStreamVolume() 函数向 AudioManager 进行查询时,锁被保存在 Oppo 框架的本机代码中。
我使用 IMA 扩展程序在我们的音频流应用程序中显示广告,让我知道我们如何在此处继续解决此 ANR,至少我们可以进行一些修复,直到 Oppo 修复此问题。
注意:我无法访问这部分 IMA 代码。