有一段时间,Android Studio在开发的应用程序崩溃时无法显示堆栈跟踪。我只能看到以下几行:
06-09 16:12:36.875 26037-26037/com.a.b W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4206c700)
这让我抓狂,因为我无法看到应用程序真正崩溃的地方(以及发生了什么异常)。我使用的是AS 1.3 Preview 2.起初我虽然存在依赖性问题,但现在我只使用这些并且问题仍然存在:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.android.gms:play-services-base:7.5.0'
compile 'com.google.android.gms:play-services-analytics:7.5.0'
compile 'com.jakewharton:butterknife:6.1.0'
}
问题可能是因为应用程序没有崩溃,但只是冻结。
感谢您的每一个建议。
答案 0 :(得分:12)
尝试删除build.gradle文件中的所有依赖项。恕我直言,该错误将在 play-services-analytics 中。 Google Analytics跟踪例外情况。尝试删除代码中的tracker.enableExceptionReporting(true)
。
答案 1 :(得分:6)
在我更新Android Studio后,同样的事情开始发生在我身上。经过几个小时的挫折,我发现点击logcat屏幕右侧的过滤器下拉菜单,然后点击无过滤器,,即使它已经设置为否过滤器,修复了问题。我不知道它是否适用于您的情况,但如果您还没有尝试,也可以尝试一下。
答案 2 :(得分:0)
对我来说,问题是Android工作室显示的是重新启动的应用版本的日志,而不是刚刚死亡的版本。
要查看已死亡的应用版本中的堆栈跟踪,逻辑窗口右侧会显示一个下拉列表,允许我从死应用中选择日志:
然后显示正确的stracktrace。
答案 3 :(得分:0)
在Radim's answer上进行详细说明,logcat不会显示由setDefaultUncaughtExceptionHandler处理的主线程异常。
您可能使用了将自身注册为默认UncaughtExceptionHandler
的分析库。
请注意,这不仅适用于未捕获的异常,而且还适用于您用android.util.Log
登录的异常。这样的代码应该记录一个异常,但只会显示“失败”消息:
try {
something();
} catch (Exception e) {
Log.v(LOG_TAG, "Failed", e);
}
无论您是否使用Log.w
,Log.e
等,Logcat都会显示此信息,没有堆栈跟踪。
V/MyApp: Failed
Radim指出play-services-analytics
是罪魁祸首,但Google的新分析库是firebase-core
;它有同样的问题。我通过在调试版本中禁用分析收集来解决此问题。
我更改了这一行:
FirebaseAnalytics.getInstance(this);
对此:
FirebaseAnalytics.getInstance(this).setAnalyticsCollectionEnabled(!BuildConfig.DEBUG);
因此,当我在开发中运行调试版本时,Firebase分析无法处理异常,并且可以在logcat中看到它们。