Ошибка связывания C ++ Firebase в проекте Android

Я пытаюсь добавить firebase c ++ sdk в мою игру cocos2d-x 3.14. Итак, я создал Android.mk в каталоге firebase_cpp_sdk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := firebase-prebuilt
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libapp.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)
LOCAL_MODULE := firebase-analytics
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libanalytics.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)

Тогда в моем проекте в Android.mk я добавил:

LOCAL_C_INCLUDES += /Users/piotr/Documents/pierdoly/firebase_cpp_sdk/include

LOCAL_STATIC_LIBRARIES += firebase-prebuilt firebase-analytics

$(call import-add-path, /Users/piotr/Documents/pierdoly/firebase_cpp_sdk)

Я могу синхронизировать Gradle и построить проект.
Я тоже могу

#include <firebase/app.h>

в AppDelegate.cpp (или h), и он работает нормально. Даже студия Android может видеть все заголовки Firebase, и я могу их проверить.

Теперь в applicationDidFinishLaunching я добавил это:

#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
::firebase::App* app = ::firebase::App::Create(::firebase::AppOptions());
#else
::firebase::App* firebaseApp = ::firebase::App::Create(::firebase::AppOptions(), cocos2d::JniHelper::getEnv(), cocos2d::JniHelper::getActivity());
#endif

Есть также альтернативная версия через JNICALL из AppActivity.java (чтобы передать правильную активность, как некоторые говорят, что решение выше не работает):

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JNIEXPORT void JNICALL Java_org_cocos2dx_cpp_AppActivity_initFirebase(JNIEnv* env, jobject thiz)
{
::firebase::App* app = ::firebase::App::Create(::firebase::AppOptions(), env, thiz);
}
#endif

И все же моя проблема: он даже не скомпилируется. Есть ошибка компоновщика:

Error:(141) undefined reference to 'firebase::App::Create(firebase::AppOptions const&, _JNIEnv*, _jobject*)'

Я могу четко «войти» в эту функцию в Android Studio, и я дважды проверил параметры, которые я даю. Они в порядке. Тем не менее, линкер кричит на меня.

Как я могу исправить линкер? Что мне здесь не хватает?

5

Решение

У меня была такая же проблема, но я нашел ответ:

Речь идет о порядке связывания библиотек.
Вы просто должны изменить это так:

LOCAL_STATIC_LIBRARIES += firebase-analytics firebase-prebuilt

И это должно работать.

Скажите спасибо ребятам в этом вопрос GitHub

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]