2017-08-13 57 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>()); 

} 
相關問題