1

我最近开始在我的应用程序中看到更多本机崩溃,在我似乎应该看到托管崩溃和 Android 堆栈跟踪的情况下。发生本机崩溃时,应用程序会立即关闭,而不会出现“不幸的是 your_app_name 已停止”框。而不是在 logcat 中很好的 Android 堆栈跟踪,我看到的是这样的:

04-01 16:07:53.165 1263-1263/? E/audit: type=1701 msg=audit(1459544873.165:4214): auid=4294967295 uid=10535 gid=10535 ses=4294967295 subj=u:r:untrusted_app:s0 pid=2372 comm="app.debug" reason="memory violation" sig=11

为了测试这一点,我特意在 OnClickListener 的 onClick() 方法中使用以下代码生成了 NullPointerException:

Log.v("debugtag", "" + ((String)null).length());

我确信这会导致 Android 堆栈跟踪,但我只看到与本机崩溃相关的输出。某些东西显然干扰了异常处理。

我注意到这在升级到 Flurry 6.3.0 后开始发生。有没有其他人看到这种情况发生?

4

2 回答 2

2

我降级到 Flurry 6.2.0,这个问题就消失了。正如预期的那样,我现在看到了完整的 Android 堆栈跟踪,而不是原生崩溃。

在使用 Flurry 6.3.0 调试应用程序时,我注意到有时我会在原生崩溃之前遇到 Flurry 的 uncaughtException() 方法。反编译后的 Flurry 代码明显被混淆了。在类“ma”中有一个私有内部类“a”,它实现了 UncaughtExceptionHandler。在内部类“a”的 uncaughtException() 方法中,这是我看到的前四行代码:

ma var3 = ma.this;
Throwable var8 = var2;
Thread var7 = var1;
Set var9 = var3.c();

在执行最后一行代码时,调试会话结束并发生本机崩溃。

我已经向 Flurry 报告了这种情况。我还不知道这是否是我的应用程序所特有的,或者这是否是 Flurry 的问题。当有更多信息可用时,我会在这里更新。

确实FlurryAgent.setCaptureUncaughtExceptions(false)在调用 FlurryAgent.init() 之前尝试过调用,但是仍然会发生本机崩溃。

更新:Flurry 报告了在他们的 6.3.1 版本中修复的问题。根据他们的发布说明,6.3.0 中引入的问题仅影响调试版本 - 不影响发布版本。

于 2016-04-01T23:16:49.273 回答
0

同样在这里。必须降级到 6.2.0 才能解决此问题。

于 2016-04-14T17:53:09.077 回答