Google 了解开发者控制台堆栈跟踪

Google Developer console stack traces understand

我在 google 商店上有一个应用程序,我在堆栈跟踪中收到崩溃。 问题是我无法获取崩溃行或文件,因为名称与 java 文件

中的名称不同
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:791)
at android.graphics.Bitmap.createBitmap(Bitmap.java:768)
at android.graphics.Bitmap.createBitmap(Bitmap.java:701)
at com.tech.myapp.dt.a(Unknown Source)
at com.tech.myapp.dt.doInBackground(Unknown Source)
at android.os.AsyncTask.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)

这里的问题是文件名

at com.tech.myapp.dt.a(Unknown Source)
at com.tech.myapp.dt.doInBackground(Unknown Source)

如何检测行和哪个文件?

您似乎在使用 Proguard 混淆代码,因此要解码堆栈跟踪,您需要 mapping.txt 文件并通过查看文件中的映射或使用retrace 工具。请参阅这些 instructions 以了解如何使用 retrace

基本上,在 Windows 平台上,您需要做的是:

retrace.bat [-verbose] mapping.txt [<stacktrace_file>]

或在 Unix 风格的平台上:

retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

但是,当您查看 OutOfMemoryError 问题的真正原因可能在其他地方(例如,如果您在其他地方泄漏内存,可能是您的 Bitmap 创建不是确实是问题),只是您在创建 Bitmap 时看到了问题,因此您可能需要更全面地查看内存使用情况 and/or 寻找内存泄漏。