5

Google Playストアにアクティブなアプリがあります。数か月後、私はPlay Consoleで多くの奇妙なクラッシュレポートを取得しています。Android 7.xのSamsung GalaxyデバイスからのOutOfMemoryErrorが多い

ここにすべてのデータを貼り付けることはできません(クラッシュレポートがたくさんあります)。私は良いサマリーを表示しようとしています。リクエストに関する詳細情報。

ほとんど影響を受けたデバイス:

  • 三星ギャラクシーA5 2016(a5xelte)
  • 三星ギャラクシーS5(klte)
  • 三星ギャラクシーA5(2017)(a5y17lte)
  • 三星ギャラクシー注3(hlte )
  • 三星ギャラクシーS5ネオ(s5neolte)
  • 三星ギャラクシーS6(zeroflte)

NDは:

  • java.lang.RuntimeExceptionlibcore.util.CharsetUtils.toUtf8Bytes
  • java.lang.OutOfMemoryError
  • java.lang.OutOfMemoryErrorjava.lang.StringFactory.newStringFromBytes
  • java.lang.OutOfMemoryErrorandroid.app.ActivityThread.performLaunchActivityにおいて:第1のデバイスは、他のクラッシュの

    タイプと比較して非常に重要ですjava.lang.StringFactory.newStringFromChars

  • java.lang.OutOfMemoryError

java.lang.StringFactory.newStringFromCharsにおけるAndroidのバージョンで
  • java.lang.OutOfMemoryError:7.0、7.1とまれ6.0

    これは、これらのデバイス上で起こっている理由を私は知らない、私はどのように知りませんこれらのレポートをデバッグすると、StackOverflowや他のソースで何も似たものが見つかりませんでした。どんな助け?


    EDIT、いくつかのスタックトレース:

    サムスンギャラクシーA5(2016)(a5xelte)、2048メガバイトのRAM、アンドロイド7.0

    java.lang.RuntimeException: 
        at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2984) 
        at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3045) 
        at android.app.ActivityThread.-wrap14 (ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1642) 
        at android.os.Handler.dispatchMessage (Handler.java:102) 
        at android.os.Looper.loop (Looper.java:154) 
        at android.app.ActivityThread.main (ActivityThread.java:6776) 
        at java.lang.reflect.Method.invoke (Method.java) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1496) 
        at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386) 
    

    サムスンギャラクシーS6エッジ(zerolte)、3072メガバイトのRAM 、Android 7.0

    java.lang.OutOfMemoryError: 
        at java.lang.StringFactory.newStringFromBytes (StringFactory.java:185) 
        at java.lang.StringFactory.newStringFromBytes (StringFactory.java:63) 
        at android.util.Base64.encodeToString (Base64.java:456) 
        at org.chromium.android_webview.AwContents.loadDataWithBaseURL (AwContents.java:428) 
        at com.android.webview.chromium.WebViewChromium.loadDataWithBaseURL (WebViewChromium.java:188) 
        at android.webkit.WebView.loadDataWithBaseURL (WebView.java:1015) 
        at com.google.android.gms.ads.internal.webview.p.loadDataWithBaseURL (p.java:131) 
        at com.google.android.gms.ads.internal.webview.o.loadDataWithBaseURL (o.java:104) 
        at com.google.android.gms.ads.internal.renderer.i.a (i.java:8) 
        at com.google.android.gms.ads.internal.renderer.a.c (a.java:35) 
        at com.google.android.gms.ads.internal.renderer.g.a (g.java:11) 
        at com.google.android.gms.ads.internal.zzk.run (zzk.java:28) 
        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:6682) 
        at java.lang.reflect.Method.invoke (Method.java) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520) 
        at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410) 
    

    Samsung Galaxy A5(2016)(a5xelte)、 2048メガバイトのRAM、アンドロイド7.0

    java.lang.OutOfMemoryError: 
        at libcore.util.CharsetUtils.toUtf8Bytes (CharsetUtils.java) 
        at java.lang.String.getBytes (String.java:879) 
        at java.lang.String.getBytes (String.java:851) 
        at org.chromium.android_webview.AwContents.loadDataWithBaseURL (AwContents.java:428) 
        at com.android.webview.chromium.WebViewChromium.loadDataWithBaseURL (WebViewChromium.java:188) 
        at android.webkit.WebView.loadDataWithBaseURL (WebView.java:1015) 
        at com.google.android.gms.ads.internal.webview.p.loadDataWithBaseURL (p.java:131) 
        at com.google.android.gms.ads.internal.webview.o.loadDataWithBaseURL (o.java:104) 
        at com.google.android.gms.ads.internal.renderer.i.a (i.java:8) 
        at com.google.android.gms.ads.internal.renderer.a.c (a.java:35) 
        at com.google.android.gms.ads.internal.renderer.g.a (g.java:11) 
        at com.google.android.gms.ads.internal.zzk.run (zzk.java:28) 
        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:6776) 
        at java.lang.reflect.Method.invoke (Method.java) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1496) 
        at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1386) 
    

    EDIT 2:私はfirebase-adsの依存関係を更新しましたが、私はまだ同じクラッシュを抱えています。プラス、私はこのバージョンでは、新たなクラッシュタイプを持っていた:

    サムスンギャラクシーA5(2016)(a5xelte)、2048メガバイトのRAM、アンドロイド7.0

    java.lang.InternalError: 
        at java.lang.Thread.nativeCreate (Thread.java) 
        at java.lang.Thread.start (Thread.java:731) 
        at java.util.concurrent.ThreadPoolExecutor.addWorker (ThreadPoolExecutor.java:941) 
        at java.util.concurrent.ThreadPoolExecutor.processWorkerExit (ThreadPoolExecutor.java:1009) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1151) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607) 
        at java.lang.Thread.run (Thread.java:762) 
    
  • +1

    ために、なくなっているように見える実際の完全なスタックトレースだけでなく、エラーメッセージを投稿してください。 – CommonsWare

    +0

    一部のスタックトレースで編集済み – AndroidGuy

    +1

    後者の2つは、Playサービスの広告コードに由来します。自分のライブラリの最新バージョンを使用していることを確認してください。 – CommonsWare

    答えて

    3

    私はこの方法を解決したくなかったが、それは私のマニフェストに

    largeHeap="true" 
    

    を追加することによって解決することがようです。

    Samsung Galaxyデバイスのメモリは、サムスンによってうまく最適化されていません(Galaxy A5 2016には2GBのRAMが搭載されていますが、これ以上は十分ですが、FirebaseではほとんどヒープがないためOOMが見えます)。だから、私は物事を一度解決することにしました。そして、私はlargeHeapをtrueに設定しました。私はこの選択を誇りに思いませんが、それは唯一の実行可能なようでした。

    結果:OOMs のすべてがが今

    +0

    このエラーは、最初に表示されたエラーで助けになりましたか? RuntimeException android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)(Samsung Galaxy A5) – OferR

    +0

    @OferRあなたは完全なスタックトレースを投稿する必要があります – AndroidGuy

    +0

    私の質問は、この解決策が問題のあなたに役立つかどうかですあなたの*あなたの質問。あなたがリストした最初のスタックトレース。 largeHeap = "true"を適用した後、これらのエラーが消えてしまっていますか? (私が参照した問題は、最初のものです。アンドロイド.app.ActivityThread.performLaunchActivityのRuntimeExceptionとスタックトレースの残りの部分にOutOfMemoryErrorが表示されます)...ありがとう... – OferR

    2

    のは、セグメントで、最後のスタックトレースを見てみましょう:

    java.lang.OutOfMemoryError: 
        at libcore.util.CharsetUtils.toUtf8Bytes (CharsetUtils.java) 
        at java.lang.String.getBytes (String.java:879) 
        at java.lang.String.getBytes (String.java:851) 
    

    ので、爆破特定の事がbyte[]Stringに変換されました。どちらがヒープスペースが非常に短いか、それはむしろ大きな文字列です。だから、

    at org.chromium.android_webview.AwContents.loadDataWithBaseURL (AwContents.java:428) 
        at com.android.webview.chromium.WebViewChromium.loadDataWithBaseURL (WebViewChromium.java:188) 
        at android.webkit.WebView.loadDataWithBaseURL (WebView.java:1015) 
    

    、ここではStringを持つ事がloadDataWithBaseURL()を経由して、WebViewであることがわかります。これは、URLがかなり大きいものがloadDataWithBaseURL()であることを示しています。 URLはdata:である可能性があります。

    at com.google.android.gms.ads.internal.webview.p.loadDataWithBaseURL (p.java:131) 
        at com.google.android.gms.ads.internal.webview.o.loadDataWithBaseURL (o.java:104) 
        at com.google.android.gms.ads.internal.renderer.i.a (i.java:8) 
        at com.google.android.gms.ads.internal.renderer.a.c (a.java:35) 
        at com.google.android.gms.ads.internal.renderer.g.a (g.java:11) 
        at com.google.android.gms.ads.internal.zzk.run (zzk.java:28) 
    

    ここでは、すべて同じJavaパッケージに由来する6つの行があります。 com.google.android.gmsはPlayサービスの多くのトップレベルパッケージであるため、com.google.android.gms.adsはおそらくその広告ライブラリの1つです。私はPlay Servicesをあまり使用していないため、まだ広告ネットワークブランドがあり、どれがcom.google.android.gms.adsにマップされているのかは分かりません。

    広告ネットワークライブラリをチェックして、サポートできる最新のものであることを確認してください。運があれば、これは彼らがライブラリのどこかのラインに沿って修正したバグです。

    +0

    私にこれを指摘してくれてありがとう。私は 'firebase-core'と' firebase-ads'の両方で古いバージョンを使用していました。最新のリリースでは、すべての問題が銀河のデバイス(performLaunchActivityの匿名RuntimeExceptionでさえ)で修正されることを願っています。指が交差しています:) – AndroidGuy

    +1

    @AndroidGuy:最初のスタックトレースには、それ以上のことがなければ何もできません。あなたのコードやライブラリを指し示す識別特性はありません。それがすべてであれば、クラッシュログを取得するために何か他の方法を使用することを検討してください。通常、これらのスタックトレースには複数のスタンザ( 'RuntimeException'と一連の行、' Caused by'ともう一つの例外と行の束)があります。あなたの実際の問題は、後のスタンザで報告されるかもしれませんが、スタックトレースのその部分がなければ、あなたは不運です。 – CommonsWare

    +0

    それは問題です。しかし、最初のスタックトレースのようなクラッシュはすべて、Android 7.0のGalaxyデバイスから発生していることに気付きました。これは、 'firebase-ads'ライブラリや' firebase-core'の問題にリンクしていると思います(両方とも古いバージョン番号を持っていました)。私は最新の2つの図書館のアップデートを発行しました。それがうまくいかない場合、私は 'firebase-crash'を依存関係に入れました。それはFirebaseコンソールへのクラッシュ報告を可能にし、もっと正確なスタックトレースで助けてくれることを願っています。 – AndroidGuy

    関連する問題