Qt / C ++ FireBase仅适用于调试模式

时间:2017-08-13 00:10:40

标签: android c++ qt firebase

我试图让Firebase在Qt(based on this link)上运行。

当我部署'发布模式'时,应用程序会在firebase初始化后立即崩溃。 奇怪的是,有时使用调试模式

这是我的步骤(based on this link

1)创建一个firebase应用程序对象,

void FBListener::start_interface()
{
    _jniEnv = new QAndroidJniEnvironment();
    QAndroidJniObject jniObject = QtAndroid::androidActivity();
    ::firebase::App *instance = ::firebase::App::GetInstance();

    if (instance) {
        _app = instance;
    } else {  
        _app = ::firebase::App::Create(*_jniEnv, jniObject.object<jobject>());
    }        
}

2 - 初始化

static ::firebase::InitResult _InitializeMessaging(::firebase::App *app, void *)
{
    NotificationHandler *handler = NotificationHandler::GetInstance();
    return ::firebase::messaging::Initialize(*app, handler->GetListener());
}

void FBListener::InitializeMessaging()
{
    // I think that the problem is here
    _initializer.Initialize(_app, nullptr,_InitializeMessaging);
}

3 - 如果在发布模式下工作,应用程序崩溃了。如果处于调试模式,我会得到令牌。

FBListener::FBListener()
{    
    start_interface();
}

这是我使用github

代码的github

有人能指出我的方向吗?

我的设置:

  • Qt creator 4.3.1 - Qt 5.9.0
  • Java版本&#34; 1.8.0_131&#34;
  • Java(TM)SE运行时环境(版本1.8.0_131-b11)
  • Java HotSpot(TM)64位服务器VM(版本25.131-b11,混合模式)
  • Android build SDK - android-24
  • 移动Android:4.4.2 - Google Play服务11.3.02 - ABI:armeabi-v7a
  • Android Studio:

Sdk平台和工具:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

问题解决了将QAndroidJniObject jniObject移到标题:

头:

private:
    QAndroidJniObject jniObject;

CPP:

void FBListener::start_interface()
{
    ...
    jniObject = QtAndroid::androidActivity();     
    _app = ::firebase::App::Create(::firebase::AppOptions(), *_jniEnv, jniObject.object<jobject>());

}