最近、アプリを更新してAndroid App Bundle(aab)を使用し、arm64ネイティブライブラリも含めるようにしました。
そのため、「Google Play Console」->「Android Vitals」->「ANRs&Crashes」のネイティブコードでのクラッシュログは正しくシンボリックされません(Javaコールスタックはシンボリックを示します)。
典型的なコールスタックのスニペットは次のようになります。
#21 pc 000000000015addc /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
#22 pc 0000000000293768 /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
#23 pc 0000000000294cf0 /data/app/com.mycompany.mygame-2/split_config.arm64_v8a.apk
この問題は、armv7とarm64の両方からのクラッシュに影響します。時折、バグには適切にシンボリックに呼び出されたコールスタックがあり、約10%が正しくシンボリックになりました。 AABとarm64を使用する前は、ほとんどすべてのコールスタックが正しくシンボリックされていました。
これを回避するために、Crashlyticsを使用して調査しましたが、適切にシンボル化されたコールスタックをそのように取得することも困難でした。以前にCrashlyticsを使用したことがないため、同じ問題が発生しているかどうか、または単にCrashlyticsを誤って設定しているかどうかを知ることは困難です。ただし、この post は、他のユーザーがAABおよびCrashlyticsで問題を抱えている可能性があることを示しています。
他の誰かが同様の問題を経験していますか?
既知の回避策はありますか?
AABを使用するように更新し、Google Play Consoleのクラッシュレポートシンボリケーションに問題が発生していない人はいますか?
編集:NDK 21 RC1はこの問題を修正する必要があります。
これは、ネイティブライブラリがAPKで圧縮されないままになっているという事実に関連しているようです。
gradle.properties
に次のオプションを追加すると、それを無効にできます。
Android.bundle.enableUncompressedNativeLibs=false
このオプションでビルドされた新しいApp Bundleをリリースする必要があります。