2017-08-13 55 views
0

我正在尝试使Qbase上的Firebase工作(based on this link)。Qt/C++ FireBase只能在调试模式下工作

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

这是我的步骤(based on this link

1)创建一个火力点的应用对象,

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版本 “1.8.0_131”
  • 的Java(TM)SE运行时环境(建1.8.0_131 -B11)
  • 爪哇热点(TM)64位服务器VM(生成25.131-B11,混合模式)
  • Android编译SDK - 机器人-24
  • 手机安卓4.4.2 - 谷歌Play服务,02年3月11日 - ABI:armeabi-V7A
  • Android的工作室:

SDK平台和工具:

enter image description here

enter image description here

回答

0

将问题解决后,将QAndroidJniObject jniObject移动到标题:

头:

private: 
    QAndroidJniObject jniObject; 

CPP:

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

} 
相关问题