【发布时间】:2016-06-16 13:31:03
【问题描述】:
我正在尝试让 firebase 与我的 Android 应用程序一起工作,但它主要是 C++ 代码。 很多可能性是,如果发生任何崩溃,这将是 C++ 部分中的某种错误访问。 Firebase 可以很好地处理未捕获的 java 异常,但是我无法让它处理 JNI 信号/异常。
据我所知,它还与 JNI 不兼容,但我认为解决方法类似于:
C++ 中的某些地方为我们想要处理的信号添加了一个信号处理程序,该处理程序会将其发送回 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 然后发送虚假报告...
【问题讨论】:
标签: android c++ firebase java-native-interface signals