Cocos2d-x v3.12 released!

We are happy to announce the release of Cocos2d-x v3.12!

This release brings bug fixes and API maintenance, as well as:

  • fixed Android performance issues
  • add experimental VR support
  • add Tizen support
  • Web engine performance improved in WebGL mode
  • support obb extension on Android

Read the full release notes.
Download it today!

5 Likes

Hi,

Thank you great news!

Could you add information about recommended android sdk/ndk versions?
Is v3.12 works with latest android-ndk-r12b released June 2016?

Regards,
CHP

I have first issue:
“cocos gen-libs -p android” - fails
My configuration: sdk: android-19, ndk: android-ndk-r10c

Also there are very suspicious two things in this log:

  1. “Building mode: debug” - it should be release

  2. “NDK_TOOLCHAIN_VERSION=clang” and “gnu-libstdc++/4.8/include\bits/unordered_map.h” - gnu-libstdc++ with clang my not work well …
    Below full log:

    running: ‘g:\j\A\external\cocos2d-x\tools/cocos2d-console/bin\cocos.bat compile -s g:\j\A\external\cocos2d-x\tools/simulator -p android --ndk-mode release --app-abi armeabi’

    Building mode: debug
    Using Eclipse project : g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android
    Android platform not specified, searching a default one…
    running: ‘“g:\j\A\repos\…\3rdparty\android-sdk_r24.0.1\tools\android” update project -t android-19 -p g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android’

    Updated project.properties
    Updated local.properties
    Updated file g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android\proguard-project.txt
    Android platform not specified, searching a default one…
    running: ‘“g:\j\A\repos\…\3rdparty\android-sdk_r24.0.1\tools\android” update lib-project -p g:\j\A\external\cocos2d-x\cocos\platform\android\java -t android-19’

    Updated project.properties
    Updated local.properties
    Updated file g:\j\A\external\cocos2d-x\cocos\platform\android\java\proguard-project.txt
    Building native…
    NDK build mode: release
    running: ‘“g:\j\A\repos\…\3rdparty\android-ndk-r10c\ndk-build” -C g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android -j8 APP_ABI=“armeabi” NDK_MODULE_PATH=g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android…/…/…/…/…/;g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android…/…/…/…/…/cocos/;g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android…/…/…/…/…/external;g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android…/…/…/…/…/cocos/scripting NDK_TOOLCHAIN_VERSION=clang’

    Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
    Android NDK: WARNING: Unsupported source file extensions in g:\j\A\external\cocos2d-x\tools\simulator\frameworks\runtime-src\proj.android…/…/…/…/…/cocos//scripting/js-bindings/proj.android/Android.mk for module cocos2d_js_static
    Android NDK: \
    make.exe: Entering directory g:/j/A/external/cocos2d-x/tools/simulator/frameworks/runtime-src/proj.android' [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_cocosbuilder_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_studio_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_csloader_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_spine_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_video_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_ui_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_webview_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_extension_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_physics3d_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_navmesh_auto.cpp [armeabi] Compile++ thumb: cocos2d_simulator_static <= extension_set.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= generated_message_util.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= message_lite.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= once.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= atomicops_internals_x86_gcc.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= repeated_field.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= wire_format_lite.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= zero_copy_stream.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= zero_copy_stream_impl_lite.cc [armeabi] Compile++ thumb: cocos2d_simulator_static <= stringprintf.cc [armeabi] StaticLibrary : libcocos2d.a [armeabi] Compile++ arm : cocostudio_static <= WidgetReader.cpp [armeabi] Compile++ arm : cocostudio_static <= WidgetCallBackHandlerProtocol.cpp [armeabi] Compile++ arm : cocostudio_static <= FlatBuffersSerialize.cpp [armeabi] Compile++ arm : cocostudio_static <= CCComExtensionData.cpp [armeabi] Compile++ arm : cocostudio_static <= CocoStudio.cpp [armeabi] Compile++ arm : cocos_ui_static <= UILayoutComponent.cpp [armeabi] Compile++ arm : cocos_ui_static <= UITabControl.cpp [armeabi] Compile++ arm : cocos2dlua_shared <= main.cpp [armeabi] Compile++ arm : cocos2dlua_shared <= AppDelegate.cpp [armeabi] Compile++ arm : cocos2dlua_shared <= RuntimeLuaImpl.cpp [armeabi] Compile++ arm : cocos2dlua_shared <= RuntimeJsImpl.cpp [armeabi] Compile arm : cocos2dlua_shared <= lua_debugger.c [armeabi] Compile++ arm : cocos2d_lua_static <= CCLuaEngine.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= CCLuaBridge.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= CCLuaStack.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= CCLuaValue.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= Cocos2dxLuaLoader.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= LuaBasicConversions.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_module_register.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_physics_auto.cpp [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_deprecated.cpp jni/../../Classes/ide-support/RuntimeJsImpl.cpp:222:52: error: no viable conversion from 'unordered_map<[...], JS::PersistentRootedScript *>' to 'unordered_map<[...], JSScript *>' std::unordered_map<std::string, JSScript*> filenameScript = ScriptingCore::getInstance()->getFileScript(); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ g:/j/A/3rdparty/android-ndk-r10c/sources/cxx-stl/gnu-libstdc++/4.8/include\bits/unordered_map.h:168:7: note: candidate constructor not viable: no known conversion from 'std::unordered_map<std::string, JS::PersistentRootedScript *>' to 'const std::unordered_map<std::basic_string<char>, JSScript *, std::hash<string>, std::equal_to<std::basic_string<char> >, std::allocator<std::pair<const std::basic_string<char>, JSScript *> > > &' for 1st argument unordered_map(const unordered_map&) = default; ^ g:/j/A/3rdparty/android-ndk-r10c/sources/cxx-stl/gnu-libstdc++/4.8/include\bits/unordered_map.h:171:7: note: candidate constructor not viable: no known conversion from 'std::unordered_map<std::string, JS::PersistentRootedScript *>' to 'std::unordered_map<std::basic_string<char>, JSScript *, std::hash<string>, std::equal_to<std::basic_string<char> >, std::allocator<std::pair<const std::basic_string<char>, JSScript *> > > &&' for 1st argument unordered_map(unordered_map&&) = default; ^ g:/j/A/3rdparty/android-ndk-r10c/sources/cxx-stl/gnu-libstdc++/4.8/include\bits/unordered_map.h:184:7: note: candidate constructor not viable: no known conversion from 'std::unordered_map<std::string, JS::PersistentRootedScript *>' to 'initializer_list<value_type>' for 1st argument unordered_map(initializer_list<value_type> __l, ^ [armeabi] Compile++ arm : cocos2d_lua_static <= lua_cocos2dx_experimental_manual.cpp 1 error generated. make.exe: *** [obj/local/armeabi/objs/cocos2dlua_shared/__/__/Classes/ide-support/RuntimeJsImpl.o] Error 1 make.exe: *** Waiting for unfinished jobs.... make.exe: Leaving directoryg:/j/A/external/cocos2d-x/tools/simulator/frameworks/runtime-src/proj.android’

Hi @CrazyHappyGame

According to build requirements ndk 11+ is a must. I’m currently downloading ndk12b and v3.12 for testing purposes

EDIT: Link updated. tool for adding hyperlink changed the # by it’s ascii code :confused:

@ishmar your link does not work.
Here http://cocos2d-x.org/docs/installation/A/ is:
“NDK r10c+ is required to build Android games”

It seems like ndk12b will in v3.13:

CHP

Continuing the discussion from Cocos2d-x v3.12 released!:

Let me apology @CrazyHappyGame, fórum editor cheated me and swapped the # by it’s ASCII code. I’ve updated the link, try again.

Agree, we’ll have to wait until ndk12b is supported. Meanwhile, guess we’ll have to give a try to ndk11. Full reléase notes also state that ndk11 is supported:

[FIX] Android: fix compiling error if using NDK r11+

@zhangxm Can you answer about the NDK version and also take a look at cocos gen-libs -p android failing?

I’ll test it as well.

Yep, there is an issue with ndk r12b, i am fixing it. I think NDK r11+ is ok though i uses ndk r11c.

Thank you!!
compile bug:(android sdk:23 ndk:r11c)
\tests\cpp-tests>cocos run -p android -m release

~~~~
[armeabi] SharedLibrary  : libcpp_tests.so
D:/cocos/cocos2d-x/tests/cpp-tests/proj.android/../../../external/websockets/prebuilt/android/armeabi/libwebsockets.a(lws-plat-unix.c.o):lws-plat-unix.c:function lws_plat_context_early_init: error: undefined reference to 'bsd_signal'
D:/cocos/cocos2d-x/tests/cpp-tests/proj.android/../../../external/websockets/prebuilt/android/armeabi/libwebsockets.a(lws-plat-unix.c.o):lws-plat-unix.c:function lws_plat_context_early_init: error: undefined reference to 'bsd_signal'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi/libcpp_tests.so] Error 1

“tests\performance-tests” compile is success.

Nice to see a new update. Does this support IPv6 out of the box?

“* add Tizen support”
why dont I see Tizen Folder in my JS Game runtime-src folder ???
thanks

Seems very great the utils::findChild

1 Like

Still no Android studio support :frowning:
Cant even just add c++ support for coding? No run/debug, just auto complete
so atleast we can edit project which have sdkbox implementation.

Js is not available now on Tizen platform, only Lua and C++ are supported.

Hi, in near future, will JS support Tizen platform??
thanks :slight_smile:

@dbest10 yep, it supports IPV6 only, but it may have issue with CURL lib, can refer to this issue

@pbs0512 i met the issue if i changed tests/cpp-tests/proj.android/project.properties from target=android-10 to target=android-19. It is possible that different Android OS has different symbols. And websockets uses bsd_signal that are removed in higher Android OS. So i suggest you downloading Android 10.

@smitpatel88 will try to support in in 3.13, we are waiting a good supporting of Android Studio.

Thanks zhangxm. Unfortunately it could mean that my app may still be rejected by Apple.

@pbs0512 i found that this error is caused by NDK compatibility issue, can refer to this issue for detail information.

Indeed, the arch-arm/usr/include/signal.h header up to "android-19" contained:

/* differentiater between sysv and bsd behaviour 8*/
extern __sighandler_t sysv_signal(int, __sighandler_t);
extern __sighandler_t bsd_signal(int, __sighandler_t);

/* the default is bsd */
static __inline__ __sighandler_t signal(int s, __sighandler_t f)
{
    return bsd_signal(s,f);
}
but starting at "android-21" (there is no android-20) has just:

extern sighandler_t signal(int, sighandler_t);
So it looks that stdlib would have to use different symbols depending on which version of Android SDK it was targeting.
1 Like

So recommended configuration for android is:
android sdk:10
ndk:r11c
?
I think that cocos command line should check it and do not allow compile in different configuration

Regards,
CHP

1 Like