私はAndroidベースのアプリケーションでfirebaseを動作させようとしていますが、主にC++コードです。 クラッシュがあると、C++部分に何らかの悪いアクセスがある可能性があります。 Firebaseは捕捉されていないjava例外とうまく動作しますが、JNIシグナル/例外で動作するようにはできません。 CでAndroid JNIシグナル/例外の後にレポートを送信
Somewehre ++、我々はそれが送信されます対処したい信号のためのシグナルハンドラを追加します。私の知る限り、それはまだJNIと互換性がありません知っているが、私はこの問題を回避するには、これに似たものになるだろうと思ったよう
Java側に戻り、可能であればスタックトレースの一部を使用してレポートを送信しようとします。
#include <cisgnal>
namespace
{
void SignalHandler(int sig)
{
// Code to call a static method in my Activity
}
}
CrashReporter::CrashReporter()
{
::signal(SIGABRT, & ::SignalHandler)
}
// In java
public static void SendReportOnCrash()
{
FirebaseCrash.report(new Exception("OOPS"));
}
残念ながら、偽のレポートは送信されませんが、Javaではコールバックを取得します。 私はFirebaseCrash.report()を呼び出すプロセス分離アクティビティを起動しようとしましたが、非静的な方法はありません。したがって、FirebaseApp/Crashはセカンダリアクティビティでインスタンス化されていないため、常にクラッシュします。
私はここに来て、誰かがそれを行う方法についてヒントを持っているかどうか尋ねる。
私の最後の試みが、少なくともテストは、このファイルが存在する場合はそうFirebaseCrash.logはその後、偽のレポートを送って使用する場合、ファイルにスタックトレースを書き、そして新たなスタート時に、テストすることですたかった...