cocos2dx v3.17
NDK r16b
SDKBOX IAP 2.4.0.1
The debug build succeeded, but the following error is issued in the release build.
Is there a solution?
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ‘:puzzlegame:externalNativeBuildRelease’.
Build command failed.
Error while executing process /Applications/android/android-ndk-r16b/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/user/android/puzzlegame/proj.android/app/jni/Android.mk NDK_APPLICATION_MK=/Users/user/android/puzzlegame/proj.android/app/jni/Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=0 APP_PLATFORM=android-15 NDK_OUT=/Users/user/android/puzzlegame/proj.android/app/build/intermediates/ndkBuild/release/obj NDK_LIBS_OUT=/Users/user/android/puzzlegame/proj.android/app/build/intermediates/ndkBuild/release/lib NDK_TOOLCHAIN_VERSION=clang -j8 NDK_DEBUG=0 /Users/user/android/puzzlegame/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libcocos2dcpp.so}
[armeabi-v7a] StaticLibrary : libcocostudio.a
[armeabi-v7a] StaticLibrary : libcocosbuilder.a
[armeabi-v7a] StaticLibrary : libcocos3d.a
[armeabi-v7a] StaticLibrary : libspine.a
[armeabi-v7a] StaticLibrary : libui.a
[armeabi-v7a] StaticLibrary : libcocosdenshion.a
[armeabi-v7a] StaticLibrary : flatbuffers.a
[armeabi-v7a] StaticLibrary : libaudioengine.a
[armeabi-v7a] StaticLibrary : libnetwork.a
[armeabi-v7a] StaticLibrary : libvorbisidec.a
[armeabi-v7a] StaticLibrary : libpvmp3dec.a
[armeabi-v7a] StaticLibrary : librecast.a
[armeabi-v7a] StaticLibrary : libcocos2dandroid.a
[armeabi-v7a] StaticLibrary : libcpufeatures.a
[armeabi-v7a] StaticLibrary : libextension.a
[armeabi-v7a] StaticLibrary : libcocos2dxinternal.a
[armeabi-v7a] SharedLibrary : libcocos2dcpp.so
/Users/user/android/puzzlegame/proj.android/app/jni/./sdkbox/libs_c++_static/armeabi-v7a/libsdkbox.a(Utils.o):function std::__ndk1::basic_stringstream<char, std::__ndk1::char_traits, std::__ndk1::allocator >::~basic_stringstream(): warning: relocation refers to discarded section
/Applications/android/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/…/…/…/…/arm-linux-androideabi/bin/ld: error: treating warnings as errors
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/Users/user/android/puzzlegame/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/libcocos2dcpp.so] Error 1
I tested with android-ndk-r14b
, would you use r14b instead of r16.
I 'll test the r16.
cocos2dx v3.17 is written as ndk r16.
Does it work even on r14?
I tried it with ndk r14b, but I got the same error
What commands are you running?
This command.
cocos compile -p android --android-studio -m release
I added SDKBO IAP to the v3.17 new project, but there are no errors in r16 and r14.
I do not understand
I am investigating the problem…
Thanks.
After adding it to Android.mk, the build succeeded.
But crash with sdkbox.init().
SDKBox.init(this);
05-30 11:30:52.109 18082-18082/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: jp.co.puzzlegame, PID: 18082
java.lang.UnsatisfiedLinkError: Native method not found: com.c.b.a.a:(Ljava/lang/Object;Ljava/lang/ClassLoader;)V
at com.c.b.a.a(Native Method)
at com.c.b.a.a(SDKBox.java:71)
at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:129)
at org.cocos2dx.cpp.AppActivity.onCreate(AppActivity.java:83)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Debug build is working properly.
cocos compile -p android --android-studio
Umm…
ok, I 'll check with RELEASE mode.
UPDATE :
~/test/cpp317 [master] $ echo $NDK_ROOT
/Users/admin/Documents/sdk/android/android-ndk-r16b
~/test/cpp317 [master] $ sdkbox info
_______ ______ _ _ ______ _____ _ _
|______ | \ |____/ |_____] | | \___/
______| |_____/ | \_ |_____] |_____| _/ \_
Copyright (c) 2016-2018 SDKBOX Inc. v1.0.1.35
installed packages:
v2.4.0.1 iap
~/test/cpp317 [master] $ cocos run -p android -m release
works for me.
would you plz check your test project, must create from cocos2d-x-3.17
tag .
Thanks,
Thanks.
3.17 new project + ndk r16b is no error.
But in my project I get an error.
It can not be reproduced with a new project.
Are there any hints?
It was reproduced.
I get an error with the this code.
std :: stringstream aaa;
In the case of “prebuilt”, get an error even if you do not write the above code.
Can you reproduce it?
Is this a problem for me?
whats prebuilt
mean? plz show me the steps, thanks.
Create a static library with this command.
cocos gen-libs -e /Applications/Cocos/Cocos2d-x/cocos2d-x-3.17 -p ios -p android --ap android-26 -m release
But in 3.17 prebuilt-mk is not created and the procedure is tough.
cocos2dx 3.17
android ndk r16b
This code will generate static libraries
cocos gen-libs -e /Applications/Cocos/Cocos2d-x/cocos2d-x-3.17 -p android --ap android-26
But, “prebuilt-mk” folder And “Android.mk” is not generated.
Why?
It may be that “std :: stringstream” is somewhere in cocos2dx.
Can you reproduce it?
Case 1
Error in release build when adding the this code.
std :: stringstream aaa;
Case 2
Error in release build with cocos2dx prebuilt.
I think Case 1 can be reproduced quickly.
Do you need further details on Case 2?
shinichi:
Error in release build when adding the this code.
std :: stringstream aaa;
?
I added bellow codes to cocos2d.cpp
file:
#include <sstream>
std :: stringstream aaa;
BUILD SUCCESSFUL in 5s
59 actionable tasks: 6 executed, 53 up-to-date
Move apk to /Users/admin/repos/cocos2d-x/tests/cpp-empty-test/bin/release/android
Build succeed.
~/repos/cocos2d-x [cocos2d-x-3.17] $ cocos gen-libs -e `pwd` -p android --ap android-26 -m release
Case 1 and Case 2 separately, no relation.
Either way you get an error.
Case 1
Add SDKBox IAP
Add Code.
AppDelegate.cpp
bool AppDelegate::applicationDidFinishLaunching() {
std::stringstream aaa;
...
building.
cocos compile -p android --android-studio -m release
Case 2
Add SDKBox IAP
Generate cocos2dx prebuilt, And setting using prebuilt.
cocos gen-libs -e /Applications/Cocos/Cocos2d-x/cocos2d-x-3.17 -p ios -p android --ap android-26 -m release
Update android.mk, build.gradle.
Set cocos2dx each prebuilt-mk/android.mk.
Etc Settings.....
building.
cocos compile -p android --android-studio -m release
BUILD SUCCESSFUL in 11s
80 actionable tasks: 6 executed, 74 up-to-date
Move apk to /Users/admin/test/cpp317/bin/debug/android
Build succeed.
~/test/cpp317 [master] $ cocos compile -p android
~/test/cpp317 [master] $ echo $NDK_ROOT
/Users/admin/Documents/sdk/android/android-ndk-r16b
sorry, I sent it on the way.
We are updating the contents.
Is the result a release build?