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」内には、UncaughtExceptionHandler を実装するプライベート内部クラス「a」があります。内部クラス「a」の uncaughtException() メソッドでは、コードの最初の 4 行が次のようになります。

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

コードの最後の行を実行すると、デバッグ セッションが終了し、ネイティブ クラッシュが発生します。

この状況をFlurryに報告しました。これが私のアプリ特有のものなのか、Flurry の問題なのかはまだわかりません。追加情報が利用可能になり次第、ここで更新します。

FlurryAgent.init () を呼び出す前に呼び出しをFlurryAgent.setCaptureUncaughtExceptions(false)試みましたが、ネイティブ クラッシュは引き続き発生します。

更新: Flurry は、6.3.1 リリースで修正された問題を報告しています。リリース ノートによると、6.3.0 で導入された問題はデバッグ ビルドにのみ影響し、リリース ビルドには影響しませんでした。

于 2016-04-01T23:16:49.273 に答える
0

こっちも一緒。この問題を解決するには、6.2.0 にダウングレードする必要があります。

于 2016-04-14T17:53:09.077 に答える