[Solved] SDKBox IAP for Cocos2d-js crash when onProductRequestSuccess

That’s a mistake, not actually an error log, besides the log, did the IAP work for you?

Oh ok. Well no, the app crashes as soon as sdkbox.IAP.init() is called (with this JS call commented, the app works, so I guess the “SDKBox.init(this);” in Cocos2dxActivity.java is fine).

Here is what I see in the logcat:

E/Trace(1128): error opening trace file: No such file or directory (2)
D/dalvikvm(1128): Trying to load lib /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so 0x40cd5938
D/dalvikvm(1128): Added shared lib /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so 0x40cd5938
D/JniHelper(1128): JniHelper::setJavaVM(0x2a008e90), pthread_self() = 1073849308
D/main(1128): cocos_android_app_init
D/Cocos2dxActivity(1128): model=google_sdk
D/Cocos2dxActivity(1128): product=google_sdk
D/Cocos2dxActivity(1128): isEmulator=true
D/libEGL(1128): loaded /system/lib/egl/libEGL_emulation.so
D/libEGL(1128): loaded /system/lib/egl/libGLESv1_CM_emulation.so
D/libEGL(1128): loaded /system/lib/egl/libGLESv2_emulation.so
D/(1128): HostConnection::get() New Host Connection established 0x2a29e500, tid 1144
D/(1128): HostConnection::get() New Host Connection established 0x2a29f608, tid 1128
D/cocos2d-x debug info(1128): {
D/cocos2d-x debug info(1128): 	gl.supports_vertex_array_object: false
D/cocos2d-x debug info(1128): 	gl.supports_BGRA8888: false
D/cocos2d-x debug info(1128): 	gl.supports_ATITC: false
D/cocos2d-x debug info(1128): 	gl.supports_S3TC: false
D/cocos2d-x debug info(1128): 	cocos2d.x.version: cocos2d-x-3.7
D/cocos2d-x debug info(1128): 	gl.supports_discard_framebuffer: false
D/cocos2d-x debug info(1128): 	cocos2d.x.compiled_with_profiler: false
D/cocos2d-x debug info(1128): 	gl.supports_PVRTC: false
D/cocos2d-x debug info(1128): 	cocos2d.x.build_type: DEBUG
D/cocos2d-x debug info(1128): 	gl.renderer: Android Emulator OpenGL ES Translator (Intel(R) HD Graphics 4600)
D/cocos2d-x debug info(1128): 	gl.supports_ETC1: true
D/cocos2d-x debug info(1128): 	cocos2d.x.compiled_with_gl_state_cache: true
D/cocos2d-x debug info(1128): 	gl.version: OpenGL ES 2.0 (4.2.0 - Build 10.18.10.3345)
D/cocos2d-x debug info(1128): 	gl.supports_NPOT: true
D/cocos2d-x debug info(1128): 	gl.max_texture_units: 16
D/cocos2d-x debug info(1128): 	gl.vendor: Google (Intel)
D/cocos2d-x debug info(1128): 	gl.max_texture_size: 16384
D/cocos2d-x debug info(1128): }
D/CocosPlayClient.cpp(1128): isEnabled = 0
D/CocosPlayClient.cpp(1128): isDemo = 0
D/CocosPlayClient.cpp(1128): isNotifyFileLoadedEnabled = 0
W/dalvikvm(1128): dvmFindClassByName rejecting 'org/cocos2dx/lib/Cocos2dxLocalStorage'
D/cocos2d-x debug info(1128): cocos2d: fullPathForFilename: No file found at script/jsb_boot.jsc. Possible missing file.
D/cocos2d(1128): android build version:17
D/cocos2d-x debug info(1128): JS: frame width    1280
D/cocos2d-x debug info(1128): JS: frame height    736
I/SDKBox(1128): class name : ----com/sdkbox/plugin/SDKBoxIAPGooglePlay----
E/sdkbox(1128): getFingerprintString(build): 0a0a00a0a0��0��0	00
E/sdkbox(1128): getFingerprintString(androidid): a892587c8a2a7cab
E/sdkbox(1128): getFingerprintString(macaddress): null
W/dalvikvm(1128): JNI WARNING: received null jstring
W/dalvikvm(1128):              in Lorg/cocos2dx/lib/Cocos2dxRenderer;.nativeInit:(II)V (GetStringUTFChars)
I/dalvikvm(1128): "GLThread 104" prio=5 tid=13 NATIVE
I/dalvikvm(1128):   | group="main" sCount=0 dsCount=0 obj=0x40cf5260 self=0x2a28a9f0
I/dalvikvm(1128):   | sysTid=1144 nice=0 sched=0/0 cgrp=apps handle=707300352
I/dalvikvm(1128):   | state=R schedstat=( 2224009973 1520259261 187 ) utm=153 stm=69 core=0
I/dalvikvm(1128):   #00  pc 000012a0  /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
I/dalvikvm(1128):   #01  pc 0005faa8  /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
I/dalvikvm(1128):   #02  pc 00053914  /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
I/dalvikvm(1128):   #03  pc 000539ae  /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
I/dalvikvm(1128):   #04  pc 00038aba  /system/lib/libdvm.so
I/dalvikvm(1128):   #05  pc 00038d8e  /system/lib/libdvm.so
I/dalvikvm(1128):   #06  pc 00039e4a  /system/lib/libdvm.so
I/dalvikvm(1128):   #07  pc 0003bfee  /system/lib/libdvm.so
I/dalvikvm(1128):   #08  pc 005036bc  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::JNIUtils::NewStringFromJString(_jstring*, _JNIEnv*)+25)
I/dalvikvm(1128):   #09  pc 00502c3e  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (_ZN6sdkbox15JNIInvokeStaticISsIPKcEEET_S2_S2_DpT0_+97)
I/dalvikvm(1128):   #10  pc 00502cc8  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::TrackingInfo::getDeviceFingerprint()+67)
I/dalvikvm(1128):   #11  pc 004fee5a  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::Tracking::init()+25)
I/dalvikvm(1128):   #12  pc 004f6d7c  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::Tracking::getInstance()+31)
I/dalvikvm(1128):   #13  pc 004f7afc  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::IAPWrapper::init()+359)
I/dalvikvm(1128):   #14  pc 004f7bba  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (sdkbox::IAP::init()+5)
I/dalvikvm(1128):   #15  pc 004f4068  /data/app-lib/com.johnsmith.mygame-2/libcocos2djs.so (js_PluginIAPJS_IAP_init(JSContext*, unsigned int, JS::Value*)+7)
I/dalvikvm(1128):   at org.cocos2dx.lib.Cocos2dxRenderer.nativeInit(Native Method)
I/dalvikvm(1128):   at org.cocos2dx.lib.Cocos2dxRenderer.onSurfaceCreated(Cocos2dxRenderer.java:74)
I/dalvikvm(1128):   at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1494)
I/dalvikvm(1128):   at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
E/dalvikvm(1128): VM aborting
A/libc(1128): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 1144 (Thread-104)

Here’s my Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2djs_shared

LOCAL_MODULE_FILENAME := libcocos2djs

LOCAL_SRC_FILES := hellojavascript/main.cpp ../../Classes/AppDelegate.cpp ../../Classes/PluginIAPJS.cpp ../../Classes/PluginIAPJsHelper.cpp ../../Classes/SDKBoxJSHelper.cpp

LOCAL_LDLIBS := -landroid -llog
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := PluginIAP sdkbox android_native_app_glue

LOCAL_STATIC_LIBRARIES := cocos2d_js_static

LOCAL_EXPORT_CFLAGS := -DCOCOS2D_DEBUG=2 -DCOCOS2D_JAVASCRIPT

include $(BUILD_SHARED_LIBRARY)
$(call import-add-path, $(LOCAL_PATH))


$(call import-module, scripting/js-bindings/proj.android)
$(call import-module, ./sdkbox)
$(call import-module, ./pluginiap)

Thank you for your help!

Can you try running this sample project and let me know if it’s crashing for you?

Unfortunately it is not working. Let me explain what I’m doing (perhaps I’m missing something obvious since I’m not that comfortable with Android).

So I downloaded the sample project, went to the “js” dir with the Windows Terminal and ran:

cocos compile -p android

It ends successfully and you can take a look at the output here if you want: http://pastebin.com/udP1MLGP

Then I open Eclipse and import both the “js” and “libcocos2dx” projects (like this: http://www.cocos2d-x.org/wiki/How_to_Build_an_Android_Project_with_Eclipse). At this point, the app crashes like I described in my last post (same logcat output).

Here’s my Eclipse project structure, I noticed that PluginGooglePlay.jar, PluginIAP.jar and sdkbox.jar are missing from the “libs” directory.

I tried to add those jar files manually and run the app again, but it also crashes as before.

I also tried to add the “google-play-services_lib” project (it seems like it’s needed when implementing IAP from scratch, but I didn’t find anything mentioning this in the SDKBox doc, so perhaps I don’t need it). Again, same crash.

I’m testing in the following simulator:

So, long story short: I didn’t manage to make it work ! :frowning:

can you try cocos run -p android ? And see if it runs for your device.

Actually I can’t have an USB connection with my Android device so I build an APK that I transfer thanks to a SD card.

I retrieved another Android device and all the stuff I was trying to do with the first device is working (including your sample project). I think the first device needed to be updated because it finally worked as well.

Thank you for your help, the sample project definitely helped!

By the way, I know we can’t test an IAP on a simulator, but is a crash the usual behaviour when using SDKBox IAP on an Android simulator or is it just something happening to me?

Can you post the simulator settings that’s crashing?

Sure!

Here are the logs from your sample project (it crashes as soon as the app starts, I can’t even see the first scene):

08-09 23:29:28.851: D/dalvikvm(1454): Trying to load lib /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so 0x40cd8228
08-09 23:29:29.221: D/dalvikvm(1454): Added shared lib /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so 0x40cd8228
08-09 23:29:29.221: D/JniHelper(1454): JniHelper::setJavaVM(0x2a008e90), pthread_self() = 1073849308
08-09 23:29:29.221: D/main(1454): cocos_android_app_init
08-09 23:29:29.321: D/Cocos2dxActivity(1454): model=google_sdk
08-09 23:29:29.321: D/Cocos2dxActivity(1454): product=google_sdk
08-09 23:29:29.321: D/Cocos2dxActivity(1454): isEmulator=true
08-09 23:29:29.581: D/libEGL(1454): loaded /system/lib/egl/libEGL_emulation.so
08-09 23:29:29.581: D/libEGL(1454): loaded /system/lib/egl/libGLESv1_CM_emulation.so
08-09 23:29:29.651: D/libEGL(1454): loaded /system/lib/egl/libGLESv2_emulation.so
08-09 23:29:29.661: D/(1454): HostConnection::get() New Host Connection established 0x2a29a568, tid 1469
08-09 23:29:29.661: D/(1454): HostConnection::get() New Host Connection established 0x2a29b5e0, tid 1454
08-09 23:29:29.941: D/cocos2d-x debug info(1454): {
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_vertex_array_object: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_BGRA8888: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_ATITC: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_S3TC: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	cocos2d.x.version: cocos2d-x-3.7
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_discard_framebuffer: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	cocos2d.x.compiled_with_profiler: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_PVRTC: false
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	cocos2d.x.build_type: DEBUG
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.renderer: Android Emulator OpenGL ES Translator (Intel(R) HD Graphics 4600)
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_ETC1: true
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	cocos2d.x.compiled_with_gl_state_cache: true
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.version: OpenGL ES 2.0 (4.2.0 - Build 10.18.10.3345)
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.supports_NPOT: true
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.max_texture_units: 16
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.vendor: Google (Intel)
08-09 23:29:29.941: D/cocos2d-x debug info(1454): 	gl.max_texture_size: 16384
08-09 23:29:29.941: D/cocos2d-x debug info(1454): }
08-09 23:29:30.731: D/CocosPlayClient.cpp(1454): isEnabled = 0
08-09 23:29:30.731: D/CocosPlayClient.cpp(1454): isDemo = 0
08-09 23:29:30.731: D/CocosPlayClient.cpp(1454): isNotifyFileLoadedEnabled = 0
08-09 23:29:30.731: W/dalvikvm(1454): dvmFindClassByName rejecting 'org/cocos2dx/lib/Cocos2dxLocalStorage'
08-09 23:29:30.891: D/cocos2d-x debug info(1454): cocos2d: fullPathForFilename: No file found at script/jsb_boot.jsc. Possible missing file.
08-09 23:29:30.951: D/cocos2d(1454): android build version:17
08-09 23:29:32.101: I/SDKBox(1454): class name : ----com/sdkbox/plugin/SDKBoxIAPGooglePlay----
08-09 23:29:32.111: E/sdkbox(1454): getFingerprintString(build): 0a0a00a0a0��0��0	00
08-09 23:29:32.121: E/sdkbox(1454): getFingerprintString(androidid): 73db819029002f52
08-09 23:29:32.141: E/sdkbox(1454): getFingerprintString(macaddress): null
08-09 23:29:32.141: W/dalvikvm(1454): JNI WARNING: received null jstring
08-09 23:29:32.141: W/dalvikvm(1454):              in Lorg/cocos2dx/lib/Cocos2dxRenderer;.nativeRender:()V (GetStringUTFChars)
08-09 23:29:32.141: I/dalvikvm(1454): "GLThread 110" prio=5 tid=13 NATIVE
08-09 23:29:32.141: I/dalvikvm(1454):   | group="main" sCount=0 dsCount=0 obj=0x40cf0008 self=0x2a288e28
08-09 23:29:32.151: I/dalvikvm(1454):   | sysTid=1469 nice=0 sched=0/0 cgrp=apps handle=707298720
08-09 23:29:32.151: I/dalvikvm(1454):   | state=R schedstat=( 1839980354 598528515 127 ) utm=136 stm=47 core=0
08-09 23:29:32.161: I/dalvikvm(1454):   #00  pc 000012a0  /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
08-09 23:29:32.161: I/dalvikvm(1454):   #01  pc 0005faa8  /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
08-09 23:29:32.171: I/dalvikvm(1454):   #02  pc 00053914  /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
08-09 23:29:32.171: I/dalvikvm(1454):   #03  pc 000539ae  /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
08-09 23:29:32.171: I/dalvikvm(1454):   #04  pc 00038aba  /system/lib/libdvm.so
08-09 23:29:32.171: I/dalvikvm(1454):   #05  pc 00038d8e  /system/lib/libdvm.so
08-09 23:29:32.171: I/dalvikvm(1454):   #06  pc 00039e4a  /system/lib/libdvm.so
08-09 23:29:32.171: I/dalvikvm(1454):   #07  pc 0003bfee  /system/lib/libdvm.so
08-09 23:29:32.171: I/dalvikvm(1454):   #08  pc 005036bc  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::JNIUtils::NewStringFromJString(_jstring*, _JNIEnv*)+25)
08-09 23:29:32.171: I/dalvikvm(1454):   #09  pc 00502c3e  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (_ZN6sdkbox15JNIInvokeStaticISsIPKcEEET_S2_S2_DpT0_+97)
08-09 23:29:32.171: I/dalvikvm(1454):   #10  pc 00502cc8  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::TrackingInfo::getDeviceFingerprint()+67)
08-09 23:29:32.171: I/dalvikvm(1454):   #11  pc 004fee5a  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::Tracking::init()+25)
08-09 23:29:32.171: I/dalvikvm(1454):   #12  pc 004f6d7c  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::Tracking::getInstance()+31)
08-09 23:29:32.171: I/dalvikvm(1454):   #13  pc 004f7afc  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::IAPWrapper::init()+359)
08-09 23:29:32.171: I/dalvikvm(1454):   #14  pc 004f7bba  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (sdkbox::IAP::init()+5)
08-09 23:29:32.181: I/dalvikvm(1454):   #15  pc 004f4068  /data/app-lib/org.cocos2dx.PluginTest-2/libcocos2djs.so (js_PluginIAPJS_IAP_init(JSContext*, unsigned int, JS::Value*)+7)
08-09 23:29:32.181: I/dalvikvm(1454):   at org.cocos2dx.lib.Cocos2dxRenderer.nativeRender(Native Method)
08-09 23:29:32.181: I/dalvikvm(1454):   at org.cocos2dx.lib.Cocos2dxRenderer.onDrawFrame(Cocos2dxRenderer.java:91)
08-09 23:29:32.181: I/dalvikvm(1454):   at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
08-09 23:29:32.181: I/dalvikvm(1454):   at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
08-09 23:29:32.181: E/dalvikvm(1454): VM aborting
08-09 23:29:32.181: A/libc(1454): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 1469 (Thread-110)

(By the way, I had a “… in APK sdkbox_config.json, found = false!”, but adding the json file to the “assets” directory (instead of only “assets/res”) made the warning disappear.)