[SOLVED] SDKBOX AdMob error compiling on Android

Hi, I installed SDKBOX AdMob, ChartBoost and SdkBoxAds to my project.
It was a success on iOS but not on Android. I also setup LiveOps for this.

Im not sure if I left anything out. I also tried manually add the plugins as well.

Hope someone could help me with this. I’m greatly appreciate it. Thanks!

Complete error log is at http://pastebin.com/kepqmVUW

I’m using:
cocos2dx 3.14.1
sdkbox v1.0.1.16
ndk r10c
MacOSX

Compile with --android-studio.

Below is the error log:

jni/src/AdMobProxy.cpp:118: error: undefined reference to ‘sdkbox::AdBooster::isReadyForPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/AdMobProxy.cpp:58: error: undefined reference to ‘sdkbox::AdBooster::isReadyForPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/AdMobProxy.cpp:68: error: undefined reference to ‘sdkbox::AdBooster::isReadyForPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/AdMobProxy.cpp:85: error: undefined reference to ‘sdkbox::AdBooster::isReadyForPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/AdMobWrapper-android.cpp:32: error: undefined reference to ‘sdkbox::NativeBridge::AddEventListener(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, _jobject*)>)’
jni/src/AdMobWrapper-android.cpp:49: error: undefined reference to ‘sdkbox::Json::operator[](std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/AdMobWrapper-android.cpp:50: error: undefined reference to ‘sdkbox::SdkboxCore::track(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, sdkbox::Json const&)’
jni/…/…/share/AdMobWrapper.cpp:23: error: undefined reference to ‘sdkbox::SdkboxCore::isEnabled(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/AdMobWrapper.cpp:122: error: undefined reference to ‘sdkbox::Json::operator[](std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/AdMobWrapper.cpp:123: error: undefined reference to ‘sdkbox::Json::operator[](std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/AdMobWrapper.cpp:125: error: undefined reference to ‘sdkbox::Json::operator[](std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/AdMobWrapper.cpp:128: error: undefined reference to ‘sdkbox::SdkboxCore::track(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, sdkbox::Json const&)’
jni/…/…/share/AdMobWrapper.cpp:137: error: undefined reference to ‘sdkbox::SdkboxCore::track(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, sdkbox::Json const&)’
jni/…/…/share/AdMobWrapper.cpp:146: error: undefined reference to ‘sdkbox::SdkboxCore::track(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, sdkbox::Json const&)’
jni/…/…/share/AdMobWrapper.cpp:49: error: undefined reference to ‘sdkbox::SdkboxCore::getConfig(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/AdMobWrapper.cpp:56: error: undefined reference to ‘sdkbox::Logger::GetLogger(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/AdMobWrapper.cpp:72: error: undefined reference to ‘sdkbox::Json::string_value(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/AdMobWrapper.cpp:73: error: undefined reference to ‘sdkbox::Json::string_value(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/AdMobWrapper.cpp:76: error: undefined reference to ‘sdkbox::Json::string_value(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/AdMobWrapper.cpp:90: error: undefined reference to ‘sdkbox::SdkboxCore::addPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/ChartboostWrapper.cpp:22: error: undefined reference to ‘sdkbox::SdkboxCore::isEnabled(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/ChartboostWrapper.cpp:78: error: undefined reference to ‘sdkbox::SdkboxCore::getConfig(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/ChartboostWrapper.cpp:86: error: undefined reference to ‘sdkbox::Logger::GetLogger(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/ChartboostWrapper.cpp:48: error: undefined reference to ‘sdkbox::Json::string_value(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/ChartboostWrapper.cpp:135: error: undefined reference to ‘sdkbox::SdkboxCore::addPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/PluginSdkboxAdsWrapper-android.cpp:22: error: undefined reference to 'sdkbox::NativeBridge::AddEventListener(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, _jobject
)>)’
jni/src/PluginSdkboxAdsWrapper-android.cpp:23: error: undefined reference to 'sdkbox::NativeBridge::AddEventListener(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, _jobject
)>)’
jni/src/PluginSdkboxAdsWrapper-android.cpp:25: error: undefined reference to ‘sdkbox::Logger::GetLogger(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/src/PluginSdkboxAdsWrapper-android.cpp:34: error: undefined reference to ‘sdkbox::SdkboxCore::addPlugin(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
…/…/core/include/bridge.h:317: error: undefined reference to 'sdkbox::JNIUtils::NewMap(std::__1::map<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > > > >, _JNIEnv
)’
jni/…/…/share/SdkboxAdsWrapper.cpp:20: error: undefined reference to ‘sdkbox::SdkboxCore::isEnabled(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const’
jni/…/…/share/SdkboxAdsWrapper.cpp:26: error: undefined reference to ‘sdkbox::Logger::GetLogger(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)’
jni/…/…/share/AdBoosterCreative.hpp:38: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
jni/…/…/share/AdBoosterCreative.hpp:38: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
jni/…/…/share/AdBoosterCreative.hpp:23: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
jni/…/…/share/AdBoosterCreative.hpp:40: error: undefined reference to ‘std::string::_Rep::_S_empty_rep_storage’
jni/…/…/share/AdBooster.cpp:151: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)’
jni/…/…/share/AdBooster.cpp:151: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::~basic_string()’
jni/…/…/share/AdBooster.cpp:193: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::~basic_string()’
/usr/local/Cellar/android-ndk/r10e/sources/cxx-stl/gnu-libstdc++/4.8/include/bits/basic_string.h:2521: error: undefined reference to ‘std::string::compare(char const*) const’
jni/…/…/share/AdBooster.cpp:266: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::~basic_string()’
jni/…/…/share/AdBoosterCreative.hpp:17: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::~basic_string()’
/usr/local/Cellar/android-ndk/r10e/sources/cxx-stl/gnu-libstdc++/4.8/include/bits/stl_tree.h:189: error: undefined reference to ‘std::_Rb_tree_increment(std::_Rb_tree_node_base*)’
/usr/local/Cellar/android-ndk/r10e/sources/cxx-stl/gnu-libstdc++/4.8/include/bits/stl_vector.h:794: error: undefined reference to ‘std::__throw_out_of_range(char const*)’
jni/…/…/share/AdBooster.cpp:464: error: undefined reference to ‘std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)’
jni/…/…/share/AdBooster.cpp:480: error: undefined reference to ‘std::string::operator=(std::string const&)’
jni/…/…/share/AdBooster.cpp:488: error: undefined reference to ‘std::string::_Rep::_S_empty_rep_storage’
jni/…/…/share/Utils.h:36: error: undefined reference to 'std::basic_ostringstream<char, std::char_traits,

Update:

I created a fresh project, add each plugin one by one and tested it before going to the next one, both iOS and Android successfully compile.

It must have been my current project messed up, currently half through development and I imported all three.

If I cant find the solution, I guess later I will create a new project and port over to it and test it out. So much time wasted on this T__T

If anyone have any suggestions are greatly appreciated. Thanks

Looks like some jni library is missing or old I would suggest check the jni folder to make sure

Thanks nite, you are right. I dig right into that right after a good sleep and after reading your reply :slight_smile:

my project jni is taken from older cocos2dx project which was like this:

APP_STL := c++_static

LIBCXX_USE_GABIXX := true

NDK_TOOLCHAIN_VERSION := 4.9

APP_CPPFLAGS := -frtti \
-DCC_ENABLE_CHIPMUNK_INTEGRATION=1 \
-std=c++11 \
-fsigned-char \
-pthread \
-fexceptions
APP_CPPFLAGS += -Wno-error=format-security -fpermissive -Wno-narrowing
APP_LDFLAGS := -latomic

APP_ABI := armeabi 
armeabi-v7a \
x86 \
arm64-v8a

ifeq ($(NDK_DEBUG),1)
APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
APP_OPTIM := debug
else
APP_CPPFLAGS += -DNDEBUG
APP_OPTIM := release
endif
APP_PLATFORM := android-9

I change the APP_STL bit to gnustl_static and after some code fixing, I am able to compile and run for both iOS and Android successfully.

I’m leaving it here, maybe someone will stumble the same thing.

Thank you again.