このANRの問題で私を助けてもらえますか?ユーザーはGoogle Play Consoleに何度も報告しますが、自分では再現できません。どうもありがとう。
"main" prio = 5 tid = 1ネイティブ | group = "main" sCount = 1 dsCount = 0 obj = 0x73898658 self = 0xb0204400 | sysTid = 3708 Nice = -4 cgrp = default sched = 0/0 handle = 0xb2f69534 | state = S schedstat =(5873509009 1942619080 10289)utm = 484 stm = 102 core = 3 HZ = 100 | stack = 0xbe00c000-0xbe00e000 stackSize = 8MB |保持されたミューテックス= #00 pc 00000000000174d4 /system/lib/libc.so(syscall + 28) #01 pc 0000000000046a5d /system/lib/libc.so(_ZL24__pthread_cond_timedwaitP23pthread_cond_internal_tP15pspec_ktime_mutex_text_mutex_text_mutex8 。]#02 pc 0000000000039bb1 /data/app/com.Android.chrome-1/base.apk(???) at org.chromium.ui.base.WindowAndroid.nativeOnVSync(ネイティブメソッド) at org.chromium.ui.base.WindowAndroid.access $ 700(WindowAndroid.Java:134) at org.chromium.ui.base.WindowAndroid $ 1.onVSync $ 5166USJ75THMGSJFDLKNAR9FELKIULIJF5N66JBFDPKN8RRI7D52ILG_0(Android at org.chromium.ui.VSyncMonitor $ 1.doFrame(VSyncMonitor.Java:22) at Android.view.Choreographer $ CallbackRecord.run(Choreographer.Java:872) Android.view.Choreographer.doCallbacks(Choreographer.Java:686) at Android.view.Choreographer.doFrame(Choreographer.Java:618) at Android.view.Choreographer $ FrameDisplayEventReceiver.run (振付師.Ja va:860) at Android.os.Handler.handleCallback(Handler.Java:751) at Android.os.Handler.dispatchMessage(Handler.Java:95) at Android.os.Looper.loop(Looper.Java:154) at Android.app.ActivityThread.main(ActivityThread.Java:6165) at Java.lang.reflect.Method.invoke! (ネイティブメソッド) at com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.Java:888) at com.Android.internal.os.ZygoteInit.main(ZygoteInit。 Java:778)
「ANR」は「アプリケーションが応答しない」の略です。それはあなたのアプリがユーザーのためにロックされたことを意味します。通常、2つの原因のうちの1つがあります。
この場合、スタックトレースの先頭が「org.chromium.ui.base.WindowAndroid.nativeOnVSync」にあることがわかります。 「クロム」は、とりわけGoogle Chromeを強化するオープンソースプロジェクトであることを知っておくと役に立ちます。つまり、ソースコードを見に行くことができます。
Githubで「nativeOnVysnc」をグーグル検索すると、 Javaソースコード が見つかります
基本的に、何かがChromeレンダリングコード内でロックしているようです。この時点でChromiumがWebkitに使用されていることを知るのに役立ちます。これは、Androidアプリです。おそらく、アプリに何らかのレンダリングが適切に行われていないウェブビューがある可能性がありますが、それ以上はお役に立てません。ウェブビューのJavaScriptをチェックして、メモリ使用量やその他の危険な動作がないか確認します。または、C++ネイティブコードでChromiumリポジトリの内部を調べて、何が起こっているのかをよりよく理解しようとします。
同じ問題がありました。しかし、この問題に関するANRを大幅に減らすことができました。
以前のバージョンのChromeにはVSyncリスナーをリリースしないバグがありましたが、最新バージョンのchromiumではこのバグが修正されたようです。
https://bugs.chromium.org/p/chromium/issues/detail?id=900557
プロジェクトにAdMobネイティブ広告がある場合、それが原因である可能性があります。 UnifiedNativeAdView
は内部でVSyncを使用しているようです。destroy()
を呼び出さないと、VSyncリスナーが残り、リークすると思います。
できることはいくつかあります。
私は一週間前に同じ問題を抱えていました。どこにも答えが見つかりませんでした。私のANR分析は明確ではありませんでした。その結果、それは私のせいであることが判明しました-onResume()では、(camera == null)の場合、recreate()を使用しました。すべてをテストして問題がなかった場合、最初のインストール後、カメラへの許可の要求があり、アクティビティは無限に再開されました。コードを編集した後、このエラーはほぼゼロになりました。コードのエラーを検索する必要があります。