我在 google store 上有一个应用程序,我在堆栈跟踪中收到崩溃。 问题是我无法获取崩溃行或文件,因为名称与 java 文件中的不同
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.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$1.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$2.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
时看到了问题,因此您可能需要更全面地查看内存使用情况和/或查找内存泄漏。
关于android - Google Developer 控制台堆栈跟踪了解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641978/